

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=dark>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/fluid.png">
  <link rel="icon" href="/img/icon/dw.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="author" content="Memory">
  <meta name="keywords" content="">
  
    <meta name="description" content="html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:&quot;Lucida Console&quot;,Consolas,&quot;Couri">
<meta property="og:type" content="article">
<meta property="og:title" content="Memory&#39;s blog">
<meta property="og:url" content="http://example.com/2024/05/19/%E4%B8%AA%E4%BA%BA%E6%88%90%E9%95%BF%E4%B9%8B%E8%B7%AF%EF%BC%9A%E8%AE%A1%E5%88%92%E6%BC%94%E8%BF%9B%E4%B8%8E%E6%80%9D%E6%83%B3%E8%9C%95%E5%8F%98%E7%9A%84%E8%A7%81%E8%AF%81/index.html">
<meta property="og:site_name" content="Memory&#39;s blog">
<meta property="og:description" content="html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:&quot;Lucida Console&quot;,Consolas,&quot;Couri">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/town041101.jpg">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221856370.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221916491.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221907242.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221933453.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221937872.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/sunset.png">
<meta property="og:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/image-20240326175948884.png">
<meta property="article:published_time" content="2024-05-19T00:43:41.422Z">
<meta property="article:modified_time" content="2024-05-19T00:43:41.712Z">
<meta property="article:author" content="Memory">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://gitee.com/deng-2022/pictures/raw/master/images/town041101.jpg">
  
  
  
  <title>Memory&#39;s blog</title>

  <link  rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" />



  <link  rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" />



<!-- 主题依赖的图标库，不要自行修改 -->
<!-- Do not modify the link that theme dependent icons -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_hj8rtnfg7um.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">


<link  rel="stylesheet" href="/css/main.css" />


  <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" />
  
    <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" />
  




  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    Fluid.ctx = Object.assign({}, Fluid.ctx)
    var CONFIG = {"hostname":"example.com","root":"/","version":"1.9.4","typing":{"enable":true,"typeSpeed":100,"cursorChar":"_","loop":false,"scope":[]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":false,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":true,"follow_dnt":true,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml"};

    if (CONFIG.web_analytics.follow_dnt) {
      var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
      Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
    }
  </script>
  <script  src="/js/utils.js" ></script>
  <script  src="/js/color-schema.js" ></script>
  

  

  

  

  

  

  

  



  
<meta name="generator" content="Hexo 5.4.2"></head>


<body>
  

  <header>
    

<div class="header-inner" style="height: 75vh;">
  <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/">
      <strong>Memory&#39;s blog</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                <i class="iconfont icon-home-fill"></i>
                <span>首页</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                <i class="iconfont icon-archive-fill"></i>
                <span>归档</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/categories/">
                <i class="iconfont icon-category-fill"></i>
                <span>分类</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/tags/">
                <i class="iconfont icon-tags-fill"></i>
                <span>标签</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                <i class="iconfont icon-user-fill"></i>
                <span>关于</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/links/">
                <i class="iconfont icon-link-fill"></i>
                <span>友链</span>
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              <i class="iconfont icon-search"></i>
            </a>
          </li>
          
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">
              <i class="iconfont icon-dark" id="color-toggle-icon"></i>
            </a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

  

<div id="banner" class="banner" parallax=true
     style="background: url('/img/newBG/girl.jpg') no-repeat center center; background-size: cover;">
  <div class="full-bg-img">
    <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
      <div class="banner-text text-center fade-in-up">
        <div class="h2">
          
            <span id="subtitle" data-typed-text=""></span>
          
        </div>

        
          
  <div class="mt-3">
    
      <span class="post-meta mr-2">
        <i class="iconfont icon-author" aria-hidden="true"></i>
        Memory
      </span>
    
    
      <span class="post-meta">
        <i class="iconfont icon-date-fill" aria-hidden="true"></i>
        <time datetime="2024-05-19 08:43" pubdate>
          2024年5月19日 早上
        </time>
      </span>
    
  </div>

  <div class="mt-1">
    
      <span class="post-meta mr-2">
        <i class="iconfont icon-chart"></i>
        
          98k 字
        
      </span>
    

    
      <span class="post-meta mr-2">
        <i class="iconfont icon-clock-fill"></i>
        
        
        
          245 分钟
        
      </span>
    

    
    
      
        <span id="leancloud-page-views-container" class="post-meta" style="display: none">
          <i class="iconfont icon-eye" aria-hidden="true"></i>
          <span id="leancloud-page-views"></span> 次
        </span>
        
      
    
  </div>


        
      </div>

      
    </div>
  </div>
</div>

</div>

  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="side-col d-none d-lg-block col-lg-2">
      

    </div>

    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none"></h1>
            
              <p class="note note-success">
                
                  
                    本文最后更新于：9 天前
                  
                
              </p>
            
            
              <div class="markdown-body">
                
                <!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>

<style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; --title-bar-height:20px; }
.mac-os-11 { --title-bar-height:28px; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
.typora-export .task-list-item input { pointer-events: none; }
@media screen and (max-width: 500px) {
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
  .CodeMirror-sizer { margin-left: 0px !important; }
  .CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; image-orientation: from-image; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-fences-adv-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li blockquote { margin: 1rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  .typora-export #write { break-after: avoid; }
  .typora-export #write::after { height: 0px; }
  .is-mac table { break-inside: avoid; }
  .typora-export-show-outline .typora-export-sidebar { display: none; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
.MathJax_ref { fill: currentcolor; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
.md-expand mark .md-meta { opacity: 0.3 !important; }
mark .md-meta { color: rgb(0, 0, 0); }
@media print {
  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }
}
.md-diagram-panel .messageText { stroke: none !important; }
.md-diagram-panel .start-state { fill: var(--node-fill); }
.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }
.md-fences.md-fences-math { font-size: 1em; }
.md-fences-advanced:not(.md-focus) { padding: 0px; white-space: nowrap; border: 0px; }
.md-fences-advanced:not(.md-focus) { background: inherit; }
.typora-export-show-outline .typora-export-content { max-width: 1440px; margin: auto; display: flex; flex-direction: row; }
.typora-export-sidebar { width: 300px; font-size: 0.8rem; margin-top: 80px; margin-right: 18px; }
.typora-export-show-outline #write { --webkit-flex:2; flex: 2 1 0%; }
.typora-export-sidebar .outline-content { position: fixed; top: 0px; max-height: 100%; overflow: hidden auto; padding-bottom: 30px; padding-top: 60px; width: 300px; }
@media screen and (max-width: 1024px) {
  .typora-export-sidebar, .typora-export-sidebar .outline-content { width: 240px; }
}
@media screen and (max-width: 800px) {
  .typora-export-sidebar { display: none; }
}
.outline-content li, .outline-content ul { margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; list-style: none; }
.outline-content ul { margin-top: 0px; margin-bottom: 0px; }
.outline-content strong { font-weight: 400; }
.outline-expander { width: 1rem; height: 1.42857rem; position: relative; display: table-cell; vertical-align: middle; cursor: pointer; padding-left: 4px; }
.outline-expander::before { content: ""; position: relative; font-family: Ionicons; display: inline-block; font-size: 8px; vertical-align: middle; }
.outline-item { padding-top: 3px; padding-bottom: 3px; cursor: pointer; }
.outline-expander:hover::before { content: ""; }
.outline-h1 > .outline-item { padding-left: 0px; }
.outline-h2 > .outline-item { padding-left: 1em; }
.outline-h3 > .outline-item { padding-left: 2em; }
.outline-h4 > .outline-item { padding-left: 3em; }
.outline-h5 > .outline-item { padding-left: 4em; }
.outline-h6 > .outline-item { padding-left: 5em; }
.outline-label { cursor: pointer; display: table-cell; vertical-align: middle; text-decoration: none; color: inherit; }
.outline-label:hover { text-decoration: underline; }
.outline-item:hover { border-color: rgb(245, 245, 245); background-color: var(--item-hover-bg-color); }
.outline-item:hover { margin-left: -28px; margin-right: -28px; border-left: 28px solid transparent; border-right: 28px solid transparent; }
.outline-item-single .outline-expander::before, .outline-item-single .outline-expander:hover::before { display: none; }
.outline-item-open > .outline-item > .outline-expander::before { content: ""; }
.outline-children { display: none; }
.info-panel-tab-wrapper { display: none; }
.outline-item-open > .outline-children { display: block; }
.typora-export .outline-item { padding-top: 1px; padding-bottom: 1px; }
.typora-export .outline-item:hover { margin-right: -8px; border-right: 8px solid transparent; }
.typora-export .outline-expander::before { content: "+"; font-family: inherit; top: -1px; }
.typora-export .outline-expander:hover::before, .typora-export .outline-item-open > .outline-item > .outline-expander::before { content: "−"; }
.typora-export-collapse-outline .outline-children { display: none; }
.typora-export-collapse-outline .outline-item-open > .outline-children, .typora-export-no-collapse-outline .outline-children { display: block; }
.typora-export-no-collapse-outline .outline-expander::before { content: "" !important; }
.typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; }
.md-inline-math-container mjx-container { zoom: 0.95; }


.CodeMirror { height: auto; }
.CodeMirror.cm-s-inner { background: inherit; }
.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: 700; }
.cm-del { text-decoration: line-through; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-error { color: red; }
.cm-invalidchar { color: red; }
.cm-constant { color: rgb(38, 139, 210); }
.cm-defined { color: rgb(181, 137, 0); }
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
.cm-s-inner .CodeMirror-activeline-background { background: inherit; }
.CodeMirror { position: relative; overflow: hidden; }
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
.CodeMirror-sizer { position: relative; }
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; outline: 0px; }
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: auto hidden; }
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 10px; z-index: 3; overflow-y: hidden; }
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
.CodeMirror-lines { cursor: text; }
.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
.CodeMirror-linebackground { position: absolute; inset: 0px; z-index: 0; }
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
.cm-searching { background: rgba(255, 255, 0, 0.4); }
span.cm-underlined { text-decoration: underline; }
span.cm-strikethrough { text-decoration: line-through; }
.cm-tw-syntaxerror { color: rgb(255, 255, 255); background-color: rgb(153, 0, 0); }
.cm-tw-deleted { text-decoration: line-through; }
.cm-tw-header5 { font-weight: 700; }
.cm-tw-listitem:first-child { padding-left: 10px; }
.cm-tw-box { border-style: solid; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-color: inherit; border-top-width: 0px !important; }
.cm-tw-underline { text-decoration: underline; }
@media print {
  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
}


:root {
  --mermaid-theme: night;
}

[lang='mermaid'] .label {
  color: #333;
}

/* CSS Document */

/** code highlight */

.cm-s-inner .cm-variable,
.cm-s-inner .cm-operator,
.cm-s-inner .cm-property {
    color: #b8bfc6;
}

.cm-s-inner .cm-keyword {
    color: #C88FD0;
}

.cm-s-inner .cm-tag {
    color: #7DF46A;
}

.cm-s-inner .cm-attribute {
    color: #7575E4;
}

.CodeMirror div.CodeMirror-cursor {
    border-left: 1px solid #b8bfc6;
    z-index: 3;
}

.cm-s-inner .cm-string {
    color: #D26B6B;
}

.cm-s-inner .cm-comment,
.cm-s-inner.cm-comment {
    color: #DA924A;
}

.cm-s-inner .cm-header,
.cm-s-inner .cm-def,
.cm-s-inner.cm-header,
.cm-s-inner.cm-def {
    color: #8d8df0;
}

.cm-s-inner .cm-quote,
.cm-s-inner.cm-quote {
    color: #57ac57;
}

.cm-s-inner .cm-hr {
    color: #d8d5d5;
}

.cm-s-inner .cm-link {
    color: #d3d3ef;
}

.cm-s-inner .cm-negative {
    color: #d95050;
}

.cm-s-inner .cm-positive {
    color: #50e650;
}

.cm-s-inner .cm-string-2 {
    color: #f50;
}

.cm-s-inner .cm-meta,
.cm-s-inner .cm-qualifier {
    color: #b7b3b3;
}

.cm-s-inner .cm-builtin {
    color: #f3b3f8;
}

.cm-s-inner .cm-bracket {
    color: #997;
}

.cm-s-inner .cm-atom,
.cm-s-inner.cm-atom {
    color: #84B6CB;
}

.cm-s-inner .cm-number {
    color: #64AB8F;
}

.cm-s-inner .cm-variable {
    color: #b8bfc6;
}

.cm-s-inner .cm-variable-2 {
    color: #9FBAD5;
}

.cm-s-inner .cm-variable-3 {
    color: #1cc685;
}

.CodeMirror-selectedtext,
.CodeMirror-selected {
    background: #4a89dc;
    color: #fff !important;
    text-shadow: none;
}

.CodeMirror-gutters {
    border-right: none;
}

/* CSS Document */

/** markdown source **/
.cm-s-typora-default .cm-header, 
.cm-s-typora-default .cm-property
{
    color: #cebcca;
}

.CodeMirror.cm-s-typora-default div.CodeMirror-cursor{
    border-left: 3px solid #b8bfc6;
}

.cm-s-typora-default .cm-comment {
    color: #9FB1FF;
}

.cm-s-typora-default .cm-string {
    color: #A7A7D9
}

.cm-s-typora-default .cm-atom, .cm-s-typora-default .cm-number {
    color: #848695;
    font-style: italic;
}

.cm-s-typora-default .cm-link {
    color: #95B94B;
}

.cm-s-typora-default .CodeMirror-activeline-background {
    background: rgba(51, 51, 51, 0.72);
}

.cm-s-typora-default .cm-comment, .cm-s-typora-default .cm-code {
	color: #8aa1e1;
}@import "";
@import "";
@import "";

:root {
    --bg-color:  #363B40;
    --side-bar-bg-color: #2E3033;
    --text-color: #b8bfc6;

    --select-text-bg-color:#4a89dc;

    --item-hover-bg-color: #0a0d16;
    --control-text-color: #b7b7b7;
    --control-text-hover-color: #eee;
    --window-border: 1px solid #555;

    --active-file-bg-color: rgb(34, 34, 34);
    --active-file-border-color: #8d8df0;

    --primary-color: #a3d5fe;

    --active-file-text-color: white;
    --item-hover-bg-color: #70717d;
    --item-hover-text-color: white;
    --primary-color: #6dc1e7;

    --rawblock-edit-panel-bd: #333;

    --search-select-bg-color: #428bca;
}

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
}

html,
body {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    background: #363B40;
    background: var(--bg-color);
    fill: currentColor;
    line-height: 1.625rem;
}

#write {
    max-width: 914px;
}


@media only screen and (min-width: 1400px) {
	#write {
		max-width: 1024px;
	}
}

@media only screen and (min-width: 1800px) {
	#write {
		max-width: 1200px;
	}
}

html,
body,
button,
input,
select,
textarea,
div.code-tooltip-content {
    color: #b8bfc6;
    border-color: transparent;
}

div.code-tooltip,
.md-hover-tip .md-arrow:after {
    background: #333;
}

.native-window #md-notification {
    border: 1px solid #70717d;
}

.popover.bottom > .arrow:after {
    border-bottom-color: #333;
}

html,
body,
button,
input,
select,
textarea {
    font-family: "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
}

hr {
    height: 2px;
    border: 0;
    margin: 24px 0 !important;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: "Lucida Grande", "Corbel", sans-serif;
    font-weight: normal;
    clear: both;
    -ms-word-wrap: break-word;
    word-wrap: break-word;
    margin: 0;
    padding: 0;
    color: #DEDEDE
}

h1 {
    font-size: 2.5rem;
    /* 36px */
    line-height: 2.75rem;
    /* 40px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1.5px;
}

h2 {
    font-size: 1.63rem;
    /* 24px */
    line-height: 1.875rem;
    /* 30px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1px;
    font-weight: bold;
}

h3 {
    font-size: 1.17rem;
    /* 18px */
    line-height: 1.5rem;
    /* 24px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1px;
    font-weight: bold;
}

h4 {
    font-size: 1.12rem;
    /* 16px */
    line-height: 1.375rem;
    /* 22px */
    margin-bottom: 1.5rem;
    /* 24px */
    color: white;
}

h5 {
    font-size: 0.97rem;
    /* 16px */
    line-height: 1.25rem;
    /* 22px */
    margin-bottom: 1.5rem;
    /* 24px */
    font-weight: bold;
}

h6 {
    font-size: 0.93rem;
    /* 16px */
    line-height: 1rem;
    /* 16px */
    margin-bottom: 0.75rem;
    color: white;
}

@media (min-width: 980px) {
    h3.md-focus:before,
    h4.md-focus:before,
    h5.md-focus:before,
    h6.md-focus:before {
        color: #ddd;
        border: 1px solid #ddd;
        border-radius: 3px;
        position: absolute;
        left: -1.642857143rem;
        top: .357142857rem;
        float: left;
        font-size: 9px;
        padding-left: 2px;
        padding-right: 2px;
        vertical-align: bottom;
        font-weight: normal;
        line-height: normal;
    }

    h3.md-focus:before {
        content: 'h3';
    }

    h4.md-focus:before {
        content: 'h4';
    }

    h5.md-focus:before {
        content: 'h5';
        top: 0px;
    }

    h6.md-focus:before {
        content: 'h6';
        top: 0px;
    }
}

a {
    text-decoration: none;
    outline: 0;
}

a:hover {
    outline: 0;
}

a:focus {
    outline: thin dotted;
}

sup.md-footnote {
    background-color: #555;
    color: #ddd;
}

p {
    -ms-word-wrap: break-word;
    word-wrap: break-word;
}

p,
ul,
dd,
ol,
hr,
address,
pre,
table,
iframe,
.wp-caption,
.wp-audio-shortcode,
.wp-video-shortcode {
    margin-top: 0;
    margin-bottom: 1.5rem;
    /* 24px */
}

audio:not([controls]) {
    display: none;
}

[hidden] {
    display: none;
}

::-moz-selection {
    background: #4a89dc;
    color: #fff;
    text-shadow: none;
}

*.in-text-selection,
::selection {
    background: #4a89dc;
    color: #fff;
    text-shadow: none;
}

ul,
ol {
    padding: 0 0 0 1.875rem;
    /* 30px */
}

ul {
    list-style: square;
}

ol {
    list-style: decimal;
}

ul ul,
ol ol,
ul ol,
ol ul {
    margin: 0;
}

b,
th,
dt,
strong {
    font-weight: bold;
}

i,
em,
dfn,
cite {
    font-style: italic;
}

blockquote {
    padding-left: 1.875rem;
    margin: 0 0 1.875rem 1.875rem;
    border-left: solid 2px #474d54;
    padding-left: 30px;
    margin-top: 35px;
}

pre,
code,
kbd,
tt,
var {
    font-size: 0.875em;
    font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
}

code,
tt,
var {
    background: rgba(0, 0, 0, 0.05);
}

kbd {
    padding: 2px 4px;
    font-size: 90%;
    color: #fff;
    background-color: #333;
    border-radius: 3px;
    box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
}

pre.md-fences {
    padding: 10px 10px 10px 30px;
    margin-bottom: 20px;
    background: #333;
}

.CodeMirror-gutters {
    background: #333;
    border-right: 1px solid transparent;
}

.enable-diagrams pre.md-fences[lang="sequence"] .code-tooltip,
.enable-diagrams pre.md-fences[lang="flow"] .code-tooltip,
.enable-diagrams pre.md-fences[lang="mermaid"] .code-tooltip {
    bottom: -2.2em;
    right: 4px;
}

code,
kbd,
tt,
var {
    padding: 2px 5px;
}

table {
    max-width: 100%;
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
}

th,
td {
    padding: 5px 10px;
    vertical-align: top;
}

a {
    -webkit-transition: all .2s ease-in-out;
    transition: all .2s ease-in-out;
}

hr {
    background: #474d54;
    /* variable */
}

h1 {
    margin-top: 2em;
}

a {
    color: #e0e0e0;
    text-decoration: underline;
}

a:hover {
    color: #fff;
}

.md-inline-math script {
    color: #81b1db;
}

b,
th,
dt,
strong {
    color: #DEDEDE;
    /* variable */
}

mark {
    background: #D3D40E;
}

blockquote {
    color: #9DA2A6;
}

table a {
    color: #DEDEDE;
    /* variable */
}

th,
td {
    border: solid 1px #474d54;
    /* variable */
}

.task-list {
    padding-left: 0;
}

.md-task-list-item {
    padding-left: 1.25rem;
}

.md-task-list-item > input {
    top: auto;
}

.md-task-list-item > input:before {
    content: "";
    display: inline-block;
    width: 0.875rem;
    height: 0.875rem;
    vertical-align: middle;
    text-align: center;
    border: 1px solid #b8bfc6;
    background-color: #363B40;
    margin-top: -0.4rem;
}

.md-task-list-item > input:checked:before,
.md-task-list-item > input[checked]:before {
    content: '\221A';
    /*◘*/
    font-size: 0.625rem;
    line-height: 0.625rem;
    color: #DEDEDE;
}

/** quick open **/
.auto-suggest-container {
    border: 0px;
    background-color: #525C65;
}

#typora-quick-open {
    background-color: #525C65;
}

#typora-quick-open input{
    background-color: #525C65;
    border: 0;
    border-bottom: 1px solid grey;
}

.typora-quick-open-item {
    background-color: inherit;
    color: inherit;
}

.typora-quick-open-item.active,
.typora-quick-open-item:hover {
    background-color: #4D8BDB;
    color: white;
}

.typora-quick-open-item:hover {
    background-color: rgba(77, 139, 219, 0.8);
}

.typora-search-spinner > div {
  background-color: #fff;
}

#write pre.md-meta-block {
    border-bottom: 1px dashed #ccc;
    background: transparent;
    padding-bottom: 0.6em;
    line-height: 1.6em;
}

.btn,
.btn .btn-default {
    background: transparent;
    color: #b8bfc6;
}

.ty-table-edit {
    border-top: 1px solid gray;
    background-color: #363B40;
}

.popover-title {
    background: transparent;
}

.md-image>.md-meta {
    color: #BBBBBB;
    background: transparent;
}

.md-expand.md-image>.md-meta {
    color: #DDD;
}

#write>h3:before,
#write>h4:before,
#write>h5:before,
#write>h6:before {
    border: none;
    border-radius: 0px;
    color: #888;
    text-decoration: underline;
    left: -1.4rem;
    top: 0.2rem;
}

#write>h3.md-focus:before {
    top: 2px;
}

#write>h4.md-focus:before {
    top: 2px;
}

.md-toc-item {
    color: #A8C2DC;
}

#write div.md-toc-tooltip {
    background-color: #363B40;
}

.dropdown-menu .btn:hover,
.dropdown-menu .btn:focus,
.md-toc .btn:hover,
.md-toc .btn:focus {
    color: white;
    background: black;
}

#toc-dropmenu {
    background: rgba(50, 54, 59, 0.93);
    border: 1px solid rgba(253, 253, 253, 0.15);
}

#toc-dropmenu .divider {
    background-color: #9b9b9b;
}

.outline-expander:before {
    top: 2px;
}

#typora-sidebar {
    box-shadow: none;
    border-right: 1px dashed;
    border-right: none;
}

.sidebar-tabs {
    border-bottom:0;
}

#typora-sidebar:hover .outline-title-wrapper {
    border-left: 1px dashed;
}

.outline-title-wrapper .btn {
    color: inherit;
}

.outline-item:hover {
    border-color: #363B40;
    background-color: #363B40;
    color: white;
}

h1.md-focus .md-attr,
h2.md-focus .md-attr,
h3.md-focus .md-attr,
h4.md-focus .md-attr,
h5.md-focus .md-attr,
h6.md-focus .md-attr,
.md-header-span .md-attr {
    color: #8C8E92;
    display: inline;
}

.md-comment {
    color: #5a95e3;
    opacity: 0.8;
}

.md-inline-math svg {
    color: #b8bfc6;
}

#math-inline-preview .md-arrow:after {
    background: black;
}

.modal-content {
    background: var(--bg-color);
    border: 0;
}

.modal-title {
    font-size: 1.5em;
}

.modal-content input {
    background-color: rgba(26, 21, 21, 0.51);
    color: white;
}

.modal-content .input-group-addon {
    color: white;
}

.modal-backdrop {
    background-color: rgba(174, 174, 174, 0.7);
}

.modal-content .btn-primary {
    border-color: var(--primary-color);
}

.md-table-resize-popover {
    background-color: #333;
}

.form-inline .input-group .input-group-addon {
    color: white;
}

#md-searchpanel {
    border-bottom: 1px dashed grey;
}

/** UI for electron */

.context-menu,
#spell-check-panel,
#footer-word-count-info {
    background-color: #42464A;
}

.context-menu.dropdown-menu .divider,
.dropdown-menu .divider {
    background-color: #777777;
    opacity: 1;
}

footer {
    color: inherit;
}

@media (max-width: 1000px) {
    footer {
        border-top: none;
    }
    footer:hover {
        color: inherit;
    }
}

#file-info-file-path .file-info-field-value:hover {
    background-color: #555;
    color: #dedede;
}

.megamenu-content,
.megamenu-opened header {
    background: var(--bg-color);
}

.megamenu-menu-panel h2,
.megamenu-menu-panel h1,
.long-btn {
    color: inherit;
}

.megamenu-menu-panel input[type='text'] {
    background: inherit;
    border: 0;
    border-bottom: 1px solid;
}

#recent-file-panel-action-btn {
    background: inherit;
    border: 1px grey solid;
}

.megamenu-menu-panel .dropdown-menu > li > a {
    color: inherit;
    background-color: #2F353A;
    text-decoration: none;
}

.megamenu-menu-panel table td:nth-child(1) {
    color: inherit;
    font-weight: bold;
}

.megamenu-menu-panel tbody tr:hover td:nth-child(1) {
    color: white;
}

.modal-footer .btn-default, 
.modal-footer .btn-primary,
.modal-footer .btn-default:not(:hover) {
    border: 1px solid;
    border-color: transparent;
}

.btn-primary {
    color: white;
}

.btn-default:hover, .btn-default:focus, .btn-default.focus, .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default {
    color: white;
    border: 1px solid #ddd;
    background-color: inherit;
}

.modal-header {
    border-bottom: 0;
}

.modal-footer {
    border-top: 0;
}

#recent-file-panel tbody tr:nth-child(2n-1) {
    background-color: transparent !important;
}

.megamenu-menu-panel tbody tr:hover td:nth-child(2) {
    color: inherit;
}

.megamenu-menu-panel .btn {
    border: 1px solid #eee;
    background: transparent;
}

.mouse-hover .toolbar-icon.btn:hover,
#w-full.mouse-hover,
#w-pin.mouse-hover {
    background-color: inherit;
}

.typora-node::-webkit-scrollbar {
    width: 5px;
}

.typora-node::-webkit-scrollbar-thumb:vertical {
    background: rgba(250, 250, 250, 0.3);
}

.typora-node::-webkit-scrollbar-thumb:vertical:active {
    background: rgba(250, 250, 250, 0.5);
}

#w-unpin {
    background-color: #4182c4;
}

#top-titlebar, #top-titlebar * {
    color: var(--item-hover-text-color);
}

.typora-sourceview-on #toggle-sourceview-btn,
#footer-word-count:hover,
.ty-show-word-count #footer-word-count {
    background: #333333;
}

#toggle-sourceview-btn:hover {
    color: #eee;
    background: #333333;
}

/** focus mode */
.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) * {
    color: #686868 !important;
}

.on-focus-mode .md-end-block:not(.md-focus) img,
.on-focus-mode .md-task-list-item:not(.md-focus-container)>input {
    opacity: #686868 !important;
}

.on-focus-mode li[cid]:not(.md-focus-container){
    color: #686868;
}

.on-focus-mode .md-fences.md-focus .CodeMirror-code>*:not(.CodeMirror-activeline) *,
.on-focus-mode .CodeMirror.cm-s-inner:not(.CodeMirror-focused) * {
    color: #686868 !important;
}

.on-focus-mode .md-focus,
.on-focus-mode .md-focus-container {
    color: #fff;
}

.on-focus-mode #typora-source .CodeMirror-code>*:not(.CodeMirror-activeline) * {
    color: #686868 !important;
}


/*diagrams*/
#write .md-focus .md-diagram-panel {
    border: 1px solid #ddd;
    margin-left: -1px;
    width: calc(100% + 2px);
}

/*diagrams*/
#write .md-focus.md-fences-with-lineno .md-diagram-panel {
    margin-left: auto;
}

.md-diagram-panel-error {
    color: #f1908e;
}

.active-tab-files #info-panel-tab-file,
.active-tab-files #info-panel-tab-file:hover,
.active-tab-outline #info-panel-tab-outline,
.active-tab-outline #info-panel-tab-outline:hover {
    color: #eee;
}

.sidebar-footer-item:hover,
.footer-item:hover {
    background: inherit;
    color: white;
}

.ty-side-sort-btn.active,
.ty-side-sort-btn:hover,
.selected-folder-menu-item a:after {
    color: white;
}

#sidebar-files-menu {
    border:solid 1px;
    box-shadow: 4px 4px 20px rgba(0, 0, 0, 0.79);
    background-color: var(--bg-color);
}

.file-list-item {
    border-bottom:none;
}

.file-list-item-summary {
    opacity: 1;
}

.file-list-item.active:first-child {
    border-top: none;
}

.file-node-background {
    height: 32px;
}

.file-library-node.active>.file-node-content,
.file-list-item.active {
    color: white;
    color: var(--active-file-text-color);
}

.file-library-node.active>.file-node-background{
    background-color: rgb(34, 34, 34);
    background-color: var(--active-file-bg-color);
}
.file-list-item.active {
    background-color: rgb(34, 34, 34);
    background-color: var(--active-file-bg-color);
}

#ty-tooltip {
    background-color: black;
    color: #eee;
}

.md-task-list-item>input {
    margin-left: -1.3em;
    margin-top: 0.3rem;
    -webkit-appearance: none;
}

.md-mathjax-midline {
    background-color: #57616b;
    border-bottom: none;
}

footer.ty-footer {
    border-color: #656565;
}

.ty-preferences .btn-default {
    background: transparent;
}
.ty-preferences .btn-default:hover {
    background: #57616b;
}

.ty-preferences select {
    border: 1px solid #989698;
    height: 21px;
}

.ty-preferences .nav-group-item.active,
.export-item.active,
.export-items-list-control,
.export-detail {
    background: var(--item-hover-bg-color);
}

.ty-preferences input[type="search"] {
    border-color: #333;
    background: #333;
    line-height: 22px;
    border-radius: 6px;
    color: white;
}

.ty-preferences input[type="search"]:focus {
    box-shadow: none;
}

[data-is-directory="true"] .file-node-content {
    margin-bottom: 0;
}

.file-node-title {
    line-height: 22px;
}

.html-for-mac .file-node-open-state, .html-for-mac .file-node-icon {
    line-height: 26px;
}

::-webkit-scrollbar-thumb {
    background: rgba(230, 230, 230, 0.30);
}

::-webkit-scrollbar-thumb:active {
    background: rgba(230, 230, 230, 0.50);
}

#typora-sidebar:hover div.sidebar-content-content::-webkit-scrollbar-thumb:horizontal {
    background: rgba(230, 230, 230, 0.30);
}

.nav-group-item:active {
    background-color: #474d54 !important;
}

.md-search-hit {
    background: rgba(199, 140, 60, 0.81);
    color: #eee;
}

.md-search-hit * {
    color: #eee;
}

#md-searchpanel input {
    color: white;
}

.modal-backdrop.in {
    opacity: 1;
    backdrop-filter: blur(1px);
}

.clear-btn-icon {
    top: 8px;
}


</style><title>个人成长之路：计划演进与思想蜕变的见证</title>
</head>
<body class='typora-export os-windows'><div class='typora-export-content'>
<div id='write'  class=''><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/town041101.jpg" referrerpolicy="no-referrer" alt="在忙碌的生活中找到内心的宁静与平衡"></p><h1 id='前言'><span>前言</span></h1><h3 id='栏目背景'><span>栏目背景</span></h3><ul><li><h5 id='🌟-编程之旅记录成长经历的见证'><span>🌟 编程之旅：记录成长经历的见证</span></h5></li></ul><p><span>《我的编程之旅：大学学习记录与成长经历》是我每天的编程学习经历的见证，也是我成长的见证。</span></p><ul><li><h5 id='💡-迈入新的篇章深入理解成长轨迹的重要性'><span>💡 迈入新的篇章：深入理解成长轨迹的重要性</span></h5></li></ul><p><span>然而，我意识到，为了更深入地理解自己的成长轨迹，我需要进行更有深度的思考和工作。因此，我新开设了《个人成长之路：计划演进与思想蜕变的见证》博文，将为大家呈现我个人成长的全貌，并且也是我提升文笔的机会。</span></p><ul><li><h5 id='🔑-博文开篇计划演进与思想蜕变的核心内容'><span>🔑 博文开篇：计划演进与思想蜕变的核心内容</span></h5></li></ul><p><span>这篇博文与以往迥然不同，更注重每个阶段的计划清单和我的思想感悟。不再简单记录每天的学习内容，而是更多关注如何制定有效计划以及通过记录心路历程来推动成长。我希望通过深入思考和经验分享，为读者提供更深入的个人思考和启发，共同受益。</span></p><ul><li><h5 id='🔍-不同于以往注重计划清单和思想感悟的转变'><span>🔍 不同于以往：注重计划清单和思想感悟的转变</span></h5></li></ul><p><span>这个新的方向将用充满感悟和启发的语言，引领读者思考人生意义和个人成长的重要性。我们的成长之路不仅是知识学习，更是自我探索和塑造自我意识的历程。通过记录和分享学与思的过程，我们共同追求成长，共同收获进步和成就的喜悦。</span></p><h3 id='主要内容与目标规划'><span>主要内容与目标规划</span></h3><ul><li><h5 id='✨-迈向成长与进步定期回顾和总结计划'><span>✨ 迈向成长与进步：定期回顾和总结计划</span></h5></li></ul><ul><li><h5 id='💡-计划梳理清晰看到成长轨迹'><span>💡 计划梳理：清晰看到成长轨迹</span></h5></li></ul><p><span>在漫长的旅程中，我们不断地成长和进步。通过梳理自身的计划，我们能更清晰地看到自己的成长轨迹，同时不断调整和优化目标和行动步骤。</span></p><p><span>坚持定期回顾和总结计划，发现不足之处和缺漏，是我一直以来的做法。</span></p><ul><li><h5 id='📘-个人成长之路记录计划和思想蜕变'><span>📘 个人成长之路：记录计划和思想蜕变</span></h5></li></ul><p><span>《个人成长之路：不同阶段的计划和思想蜕变》是我从回顾中得到的启示，也是我个人成长的见证。</span></p><p><span>记录每个阶段的计划和目标，看到自己的努力和成果，以及不断调整和进化的思维模式。</span></p><ul><li><h5 id='📆-日期顺序记录不同阶段的计划和思考'><span>📆 日期顺序记录：不同阶段的计划和思考</span></h5></li></ul><p><span>这篇文章将</span><strong><span>按照日期的顺序</span></strong><span>，记录下我</span><strong><span>不同阶段的计划和思考</span></strong><span>。</span></p><p><span>通过分享这些经历，让读者了解一个与众不同的个人成长历程，同时激发对自我反思和进步的思考。</span></p><p><span>希望这些记录能给读者带来启示和灵感，帮助大家在自己的旅程中不断成长和进步。</span></p><h1 id='亿些想法'><span>亿些想法</span></h1><h2 id='第一次上台面的规划'><span>第一次上台面的规划</span></h2><blockquote><p><span>2023年10月13日 午</span></p></blockquote><p><span>每天花 10 - 20 min记录下美好生活</span></p><p><span>1、编程学习：简单谈谈吧：上午看掘金，学习 try-catch 对性能的影响有多大，看到 yes 大佬的测试过程，想着自己也使用 @Benchm 测试一把，安装相关依赖、编写测试类，还是没咋搞好😐</span></p><p><span>2、软考备考：最近的学习中心又转移到了软考下午题的备考上了，上午题也一直在做，虽然得分不是很理想，但总归是有把握了，今天开始到下周结束前，也就是22号左右，希望能把历年下午题过上一遍，之后再不断重复，刷熟练度</span></p><p><span>3、课程作业：今早翘课被逮到了，计网老师要求未到同学逐个在群里说明原因，我一出场就是很炸裂的，以下是原话：</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang=""><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">首先，我要强调旷课与您的教学方法没有任何关系，这完全是出于个人原因。</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">由于我本人有明确的学习计划和职业规划，有自己的学习进度。教室里的网络环境等各种因素会对我产生一些干扰，因此我希望能够自主合理地安排时间，以便更好地完成我的学习任务。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">这当然不能成为旷课的理由，我也坦诚地承认，无故旷课确实是出于侥幸心理，对班级秩序造成了负面影响，这一点我深感抱歉。今后会均衡各方面因素，适当调整自己的学习时间。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">我们都是在为自己的前程而努力，非常感谢您的理解🤝</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 156px;"></div><div class="CodeMirror-gutters" style="display: none; height: 156px;"></div></div></div></pre><p><span>不过这也没坏处，也算是让我的目标更明确了，“塞翁失马，焉知非福”嘛，继续努力了。</span></p><p><span>最近好多科目都有课程作业了：人工智能的实验报告和期末课题、Java 期末课题、Python 课堂练习和期末课题、计网实验报告、操作系统实验报告，都是些很简单的东西，分分钟完成。再次明确一下，不要搞忘记就好了</span></p><p><span>4、读书，莫言的《生死疲劳》，坚持每天至少看五章，也就一个多小时的时间，10天就能看完了</span></p><p><span>5、对最近生活的评价：国庆之后，时间一晃就过了将近半个月，光阴似箭啊。个人项目最近比较少的做完善了，不过学习智能BI项目的过程中，学习了AI、限流、线程池、消息队列等各方面的知识。也是由于软考将至，对Java八股的记忆也是有心无力。在11月4号下午5点半，2023下半年软考结束之后，我就全身心投入到项目优化和Java八股之中</span></p><p><span>也是牺牲了很多娱乐时间，很少出去玩</span></p><p><span>6、未来展望：经济方面：希望在35岁之前，攒下100万；技术方面：成为国内互联网行业独当一面的人物。虽然有点异想天开，但充分说明了我对未来还是很有想象力的，年轻人嘛，就得狂妄些，思想上滑坡怎么行</span></p><h2 id='20231013晚'><span>2023/10/13晚</span></h2><p><span>最近慢慢发觉，基本在晚上9点之后，知识就不进大脑了。这里讲到的知识是指那些繁琐的、需要动脑筋的知识，比如代码编写、算法理解等等。基本上每晚到这个时候就不咋学得进去了，更多的想法是总结下一天中的收获，或者记录最近的学习心得，完善个人博客网站，上网看看技术文章，比如掘金、CSDN、知识星球、知乎等等，美好的一天就这样结束了。</span></p><p><span>所以对我来说，白天的时间很重要了。在现阶段，上午一定要做两件事：做算法 / 软考备考和看技术文章学习不清楚的知识点，这个知识可以是业务代码中的一个优秀的编码方案，可以是Java语法基础、常用API，可以是了解一个框架、方法或一个注解的底层实现原理等等，总之要让自己时刻保持在“我还有很多东西不明白”的状态，这样的上午能让一整天都精神焕发。</span></p><p><span>晚上就很舒坦了，看看文章、刷刷视频，轻轻松松就过去了，反思一天的学习成果，这个成果可以是学习上的，也可以是生活中的。让自己感受到今天的我比昨天有进步，今晚的我比今早的我更加强大、更加成熟；思考明天的学习计划，或者说生活计划。随心所欲，不给自己添加任何思想负担。毕竟，能够健康地活着才是最重要的</span></p><p><span>感觉最近可以高产一系列技术文章了（初步想法）：</span></p><p><span>（1）实现高可用，这些概念必须了解：限流、降级熔断、缓存、异步处理</span></p><p><span>（2）数据库优化，提升查询性能：读写分离、分库分表</span></p><p><span>（3）巩固复习 API 网关基础知识和相关概念理解</span></p><p><span>（4）线程池</span></p><p><span>今天的想法就写到这里吧，听听音乐，看一会儿Java八股，追一集美剧再说</span></p><h2 id='20231014晚'><span>2023/10/14晚</span></h2><p><span>1、编程学习：今天早上做了九套软考试题的下午题，专攻数据库 E - R 图；了解了下乐观锁、悲观锁；线程池，了解 BI 智能分析平台生成图表的逻辑，改造为异步处理。本来还想着今晚编码练练手，但我还是太懒了，加上今天周六，八点半过后要看直播，也就没心思写了，还是看看一些博文吧</span></p><p><span>2、生活：今天下午提前搞完体测了，心情大好。一千米跑完没有什么异样，看来4天的晨跑锻炼还是非常有成效的，以后也要保持两天一跑的频率，强身健体。</span></p><p><span>3、其他：还有啥好说的呢？哦对了，今天还没看小说，赶紧看几章，完了追一集美剧犒劳一下自己；晚上就简单地看看文章、做做题吧</span></p><h2 id='20231015午'><span>2023/10/15午</span></h2><p><span>又是一个美好的周末</span></p><p><span>周末就应该开摆，早上帮别人写个思想感悟，学了会儿UML图和设计模式，剩下的就是刷视频、打游戏了</span></p><p><span>不是很想打游戏，爱玩游戏的心已经消失了，不过可以看看别人的游戏实况，比如B站的小饼干</span></p><p><span>UML图，这个题有点难度，用例分析和类分析还是没有形成固定的套路，再多练练吧，</span></p><p><span>另外要熟练掌握各种设计模式的优缺点和使用场景</span></p><h2 id='20231015晚'><span>2023/10/15晚</span></h2><p><span>看到 CSDN 上的一位博主：</span><a target="_blank" rel="noopener" href='https://blog.csdn.net/CodingFire'><span>CodingFire</span></a></p><p><span>写的文章通俗易懂，由浅入深，细致入微，我也想像新手一样从头学习Redis、ES这些中间件，以及 Spring、SpringMVC、Mybatis、MybatisPlus、拦截器、AOP等 SSM框架，非常值得一学。不过这样的学习绝对是场持久战，加倍努力吧</span></p><h2 id='20231016晚'><span>2023/10/16晚</span></h2><p><span>不要因为走得太快，而忽略了身边的风景</span></p><p><span>珍惜当下，多关心身边的人</span></p><p><span>关心同学、关心老师、关心那些跟你一样每天形形色色赶路上课的同学，让从前那个操蛋的生活见鬼去吧</span></p><h2 id='20231017晚'><span>2023/10/17晚</span></h2><p><span>一眨眼，就到10月份下旬了，妈的真快</span></p><p><span>今晚主看算法，本来想着算法大题（软考）能混点分数，但看了几套真题后发现是一分都拿不到，主要就考两点：</span></p><p><span>1、理解代码的能力，能填上空</span></p><p><span>2、时间复杂度和空间复杂度，这个要记忆常见排序算法的复杂度和算法思想的复杂度</span></p><p><span>六道大题，四道必做，剩下两道选做一道，这里将简单交代</span><strong><span>各个题目的大概考点</span></strong><span>：</span></p><p><span>1、C 语言算法题：没什么技巧可言，多学多练，代码熟练度、空间复杂度，看看能不能复习到原题</span></p><p><span>2、数据流图：补充实体、补充数据存储、补充缺失的数据流并标明起点和终点、分析数据流组成</span></p><p><span>3、实体联系图：补充实体联系图（实体、联系、属性）、补充关系模式（属性、主键、外键）、分析实体间关系（1:1、1:n、m:n）、添加新的实体</span></p><p><span>4、用例图、类图：补充用例图（参与者、用例）、补充类图（具体类）、设计模式（描述、优缺点、使用场景）</span></p><p><span>5、Java / C语言程序设计：基本的语法、代码逻辑</span></p><h2 id='20231018早'><span>2023/10/18早</span></h2><ul><li><p><span>朋友圈，昨天看到的朋友圈，可惜他撤回了</span></p></li><li><p><span>近期目标：</span></p><ul><li><p><span>每天做 2 - 3 套软考真题，保持题感，</span><strong><span>同时不断巩固记忆基础知识</span></strong></p></li><li><p><span>巩固Java基础，看 Java 八股</span></p></li><li><p><span>优化项目：</span></p><ul><li><p><span>优化所有项目的首页（前端审美）</span></p></li><li><p><span>理清代码逻辑</span></p></li><li><p><span>目前的想法是，在简历上写两个项目：</span><strong><span>Memory API接口开放平台</span></strong><span>、</span><strong><span>Memory BI智能分析平台</span></strong><span>，但考虑到前期或者说年前年后选择的实习公司是本地 / 附近 / 小公司，重基础才是最重要的</span></p></li><li><h5 id='在软考结束之前应该把重心全部放在软考备考和算法巩固上一定要保证一次性过'><span>在软考结束之前，应该把重心全部放在软考备考和算法巩固上，一定要保证一次性过</span></h5></li></ul></li></ul></li></ul><h2 id='我只需要过好今天就行'><span>我只需要过好今天就行</span></h2><blockquote><p><span>2023年10月18日</span></p></blockquote><p><span>我这里提到的负罪感，不是指我欠别人什么（那个时期我早已经走出来了），现阶段或者说长久以来，我一直对自己有很大的负罪感</span></p><p><span>一天之中，我总会抽时间反省自己，思考近段时间的成果，我有提升自己嘛？不论是生活上、学习上还是朋友之间、同学之间的关系处理上，我为人处事有没有更加自信了，每个阶段对自己的定位是否准确？当下制定的计划是否具有可行性或者说是否合理</span></p><p><span>小时候，更多的是上学读书时，每到星期天，总会疯玩整个周末，把作业完成全部寄托在那离家前的最后几小时</span></p><p><span>如果在某天上午起床时背了几个单词，午休前看了会儿闲书，晚饭后做了几道数学题目，那这一整天都是满足的，就可以有充足的理由打开电脑玩游戏了</span></p><p><span>对于读书的小孩子来讲，作业就是任务，按时做作业就是按时完成任务，但那是老师或家长布置给我的任务，而不是我自己的任务</span></p><p><span>我给自己定下目标，或者说做好规划，时刻明确要做什么，清楚自己想要成为一个什么样的人s</span></p><p><span>然而正因为对自己的目标太明确了，我每次都在心里对自己说：”再多学一会儿“ ”学的还不够多“，对未来的就业更是充满了焦虑</span></p><p><span>这个焦虑不是说对未来感到迷茫，对自己的前景感到担忧，而是总认为当下的自己做的还不够多，还能做的更好</span></p><p><span>但是我又何必焦虑呢？焦虑是过一天，不焦虑也是过一天。我就应该该学学，该玩玩，进大厂拿高薪资是我的梦想，也是我的终极规划，我应该对这样的规划感到自豪，对自己为之付出的努力感到自豪，</span><strong><span>我比身边人都优秀，我的前程是广阔的</span></strong><span>。</span></p><h2 id='20231019晚'><span>2023/10/19晚</span></h2><p><span>妈的，罗列好了计划清单，一眨眼一晚上就过去了，就做了俩套真题，学了会儿算法，啥也没干</span></p><h2 id='20231020晚'><span>2023/10/20晚</span></h2><p><span>学习了一下午讯飞星火大模型，下载了官方的 SDK ，成功调用了讯飞星火API接口</span></p><p><span>这让我对自己的 AP接口开放平台的优化思路更加明确了，好久了没有优化这个项目了，可以从以下几个方面作优化：</span></p><p><span>SDK 使用文档、开发文档、页面布局、丰富接口功能（类型）、明确接口的调用（参数）</span></p><p><span>得找个时间，好好反省一下自己应该做什么了</span></p><p><span>现阶段主要把复习中心放在了软考上，更加全面地学习了设计模式、网络安全等知识，计划在一周之内，找两个晚上，好好总节一番学过的知识，写两篇博文：</span></p><p><span>（1）实现高可用，这些概念必须了解：限流、降级熔断、缓存、异步处理</span></p><p><span>（2）数据库优化，提升查询性能：读写分离、分库分表</span></p><p><span>（3）巩固复习 API 网关基础知识和相关概念理解</span></p><p><span>（4）线程池</span></p><p><span>（5）RabbitMQ 消息队列</span></p><p><span>（6）JVM</span></p><h2 id='我已经坚持了这么久'><span>我已经坚持了这么久</span></h2><blockquote><p><span>202年10月20日</span></p></blockquote><p><strong><span>Java技术栈的内容还是挺多的</span></strong></p><p><span>今晚不做软考真题了，这么长时间以来，一直把软考备考作为现阶段主要目标，项目和基础确实也相对少下了很多功夫</span></p><p><span>这两天还挺焦虑来着，明明想明白了自己近段时间或者说未来两年的路怎么走，但毕竟我也是第一次做人，我只知道好的生活一定要靠自己的双手去争取，但却不知道能不能争取到。尽管放手去做，再过十年，而立之年时，回首现在，应该会有无限感慨吧</span></p><p><span>胡言乱语了，但是我今晚突然豁然开朗了，躺在宿舍的座椅上听着直播，看着平板，做好规划，慢慢进步，这种感觉太棒了，非常充实，没有什么比看到自己有了长足进步更令我开心了</span></p><p><span>Java技术栈，今晚看 JavaGuide 八股，我发现我已经在不知不觉中对 Java 技术栈形成体系了</span></p><p><span>计网、操作系统、数据库、数据结构与算法，这四部分不用多说，非常重要，重中之重，是考核一个程序猿功力是否合格的关键所在</span></p><p><span>Java 基础，基础的语法、Java特性：反射、异常处理机制、IO等，Java 并发编程，Java 集合、JVM等等，随便拎出来一个都是庞大的知识体系</span></p><p><span>后面的框架，Spring、SpringBoot、Mybatis、Redis、Dubbo、ES、SpringCloud、Gateway网关、消息队列，我这里只是胡乱地罗列这些框架技术</span></p><p><span>又想起去年6月份在家里的时候，看着韩顺平的Java课，看着罗列出来的Java技术栈体系，鱼皮的Java学习之路，当时脑子里想的就是时间还早，我还年轻，肯定能学完。当然，我现在的水平也还是差的很远很远，我现在回头再看这些学过的知识，只觉得我这两年多来的持续学习是非常有成效的，这样的学习势头，要持续到将来我干不动退休了</span></p><p><span>大一入学学C语言，就啃那本谭浩强，当时还学得津津有味，过年那会儿解除了渡一教育，了解了前端三件套，于是学了整整5个月前端，同时还在学C++。大一下学期末，终于接触到了Java，开始了Java的学习之旅</span></p><p><span>非常感慨，胡言乱语一番，就当记个日记了。一到晚上这思绪就发散了，会想很多事情，想把这些事情讲给别人听。</span></p><p><span>但是也不知道讲给谁听，也没人愿意听，只好是写下来给自己看看了</span></p><p><span>就写这么多吧，今晚还没看看算法题，这我就不多说了，抓紧时间看看算法题，锻炼锻炼脑筋，睡觉之前记得完善一下博客就行了</span></p><p><span>再多唠一句，晨跑还是很有必要的，解乏。主要是一大早爬起来看手机看电脑是会让人感到很空虚的。</span></p><p><span>立个flag，明天早上早起，要么去跑步，不想跑步就去洗个热水澡，解解乏</span></p><h2 id='让自己更轻松一些'><span>让自己更轻松一些</span></h2><blockquote><p><span>2023年10月22日</span></p></blockquote><p><span>昨天看了那个漫画，我们总是在怀恋过去：高三苦战备考时，才回忆起小学的无拘无束、自由自在；大学匆忙考证考研为找工作做准备时，才回忆起中学生活的简单朴素，不必为学习之外的事情操心；上班成为勤勤恳恳的打工人后，既要顾家又疲于工作、处处受制于人时，才回忆起大学时光的自由散漫是多么幸福的时光；等年岁渐长，老了以后没人照料，只能独自在家怅惘，懊悔年轻时为什么没有多去外面闯闯。但到了这时候，也只能指望下辈子能早点活明白了。</span></p><p><span>我们总是在怀恋过去，却不明白“活在当下”这么简单的道理</span></p><p><span>如果我把每一周都当作自己生命中的最后一周来过，我的心态会发生什么样的变化呢？每过一周，我就来到了一个全新的世界，过往的一切全部烟消云散，重新来过。看着这些一周后再也见不到的人和事，我会作何感想？</span></p><h2 id='当年长了之后会不会遗憾'><span>当年长了之后，会不会遗憾</span></h2><blockquote><p><span>2023年11月02日</span></p></blockquote><p><span>当未来我有了家庭，带着孩子去公园玩耍，发现我已经跑不过他时，我会不会意识到自己不再年轻了</span></p><p><span>年轻时过的每一天、每一分、每一秒是否都如我所愿，不留遗憾呢</span></p><h2 id='最近的学习感悟'><span>最近的学习感悟</span></h2><blockquote><p><span>2023年11月03日</span></p></blockquote><p><span>之前一直在掘金刷博文，每天看一点、多学一点</span></p><p><span>最近一周开始，逐渐着手完善 Java 体系：Java 基础、Java 并发编程、Java 集合、Java 虚拟机等等</span></p><p><span>除此之外，高并发、高性能、可扩展方面也有所了解和持续学习推进</span></p><p><span>后续会逐渐完善 MySQL 数据库、Redis 缓存、Spring 技术栈等，我已经逐渐开始沉淀了</span></p><p><span>这样每天知识进大脑的感觉，令我非常愉悦和安逸</span></p><p><span>软考前的最后两天，也准备了长达四个月，希望能一次过，在软考结束之后，所有学习重心都要放在项目优化和算法磨练上</span></p><p><span>算法学习很漫长，目前的想法是再次快速过一遍算法通关村基础的题目，再直接看力扣150题解，看算法佛脚</span></p><p><span>项目优化扩展也很重要，目前计划在双十一入手阿里云服务器，挺便宜的，一年就 99 rmb</span></p><h2 id='心乱的一天'><span>心乱的一天</span></h2><blockquote><p><span>2023年11月04日</span></p></blockquote><p><span>今天一天感觉不在状态呵，明天下午软考，看了今天考完的群友的讨论，好像还不是很好过的样子</span></p><p><span>今晚干点啥呢？算法看着脑壳疼，算法和项目优化这东西是真的不能放在晚上看，晚上应该多看文档，效率高</span></p><p><span>继续看一会儿文档吧，计网和 Java 集合不能拉下，一切都在计划之中</span></p><p><span>明天过后，学习计划就彻底改变了，今晚就不复习了，倒是明天早上可以稍微抱一抱佛脚</span></p><p><span>👏 放平心态，祝自己今晚睡个好觉 </span></p><ul><li><span>前段时间参加了</span><strong><span>职业生涯规划大赛</span></strong><span>，</span><strong><span>参赛材料为</span></strong><span>：一份</span><code>生涯发展报告</code><span>（.pdf 文件） + 一份</span><code>生涯发展展示</code><span>（PPT）</span></li><li><span>本来还满心欢喜地盼着打到校赛，</span><strong><span>拿个实习 offer</span></strong><span> 啥的，结果昨晚通知群直接通知今晚7点开始</span><strong><span>院赛</span></strong><span>，我还没被评上。</span></li></ul><blockquote><p><span>奶奶的，一个院里六十来个参赛者，绝大部分都是 2022 级的，竟然还有好多大一的，大三大四的倒没几个</span></p><p><span>我这 PPT 也是花了心思的，我用文心一言大模型给我做了4份大学生职业生涯规划的PPT，然后取其精华，去其糟粕</span></p><p><span>凭借着我浅陋且贫瘠的审美he1设计灵感，选择了最合适的主题色，结合我自己的履历，拼凑出了一份完美的生涯发展展示</span></p><p><span>结果这份参赛材料竟然没有撑过第一轮筛选，连区区几个学弟学妹的履历都拼不过嘛。。。咱学校的比赛环境真的是一言难尽</span></p><p><span>他们究竟是什么样的可怕怪物，今晚7点见分晓，届时再到此处做评判</span></p></blockquote><ul><li><span>附上几张 </span><code>生涯发展展示</code><span>的截图吧，自我感觉很满意的：（2023/11/09晚）</span></li></ul><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221856370.png" referrerpolicy="no-referrer" alt="image-20231109221856370"></p><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221916491.png" referrerpolicy="no-referrer" alt="image-20231109221916491"></p><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221907242.png" referrerpolicy="no-referrer" alt="image-20231109221907242"></p><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221933453.png" referrerpolicy="no-referrer" alt="image-20231109221933453"></p><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20231109221937872.png" referrerpolicy="no-referrer" alt="image-20231109221937872"></p><ul><li><span>看到那几张</span><strong><span>个人项目展示</span></strong><span>的截图没？所以我才在这个栏目下</span><strong><span>唠闲话</span></strong><span>，</span><strong><span>hiahiahia</span></strong></li></ul><blockquote><p><span>我观摩回来了，一群妖魔鬼怪，什么几把职业规划大赛，</span><strong><span>吹牛逼大赛</span></strong></p><p><span>没有任何履历，不讲述自己的专业水平能力，张口闭口就是要做自动化工程师、软件测评师，我的专业水平还很欠缺，还需努力学习</span></p><p><span>我要做好大学生活的规划，有个家伙做规划，四个阶段，每个阶段10年，都特么规划到2079年了，关键还没细讲，一句话带过</span></p><p><span>全是写个指导老师就上去的：自我认知，职业评测，，职业规划，未来展望，他们的生涯发展展示跟一个模子里刻出来的一样</span></p><p><span>好多都是23级的，有着</span><strong><span>丰富的项目实战经验</span></strong><span>和</span><strong><span>优秀的专业水平能力</span></strong><span>，你特么上大学才两个月不到，这PPT抄的太不走心了吧</span></p><p><span>大学的这种比赛含金量真是让我一言难尽，还是把时间都放在个人提升上吧 </span></p></blockquote><h2 id='软考总结感悟'><span>软考总结感悟</span></h2><blockquote><p><span>2023年11月10日</span></p></blockquote><p><span>还没写成，前天上午开了个头，想着本周末能写完，在星球里分享一波</span></p><p><span>今晚开始了力扣算法打卡，今天是力扣算法题打卡第一天，不管怎么说，</span><strong><span>算法打卡开始了</span></strong></p><p><span>今晚分析最大栈、最小栈、栈实现队列、队列实现栈、链表构造等问题时，拿语雀的画板画了画图，那可真是一目了然</span></p><p><span>我想我找到了</span><strong><span>适合我的算法学习方法</span></strong><span>了：画图，真的很有用，这个经验也可以稍微写个总结，</span><strong><span>本周末完成吧</span></strong></p><p><span>看起来周末又有了几个新任务，这都不是事儿，我总能抽出时间完成的，好歹花了</span><strong><span>5天</span></strong><span>左右就赶出了生涯发展展示 + 报告</span></p><p><span>总结今天的力扣打卡题目，耍会儿星球，看看掘金吧，Memory 聚合搜索平台的优化就放到明天了</span></p><h2 id='个人博客搭建'><span>个人博客搭建</span></h2><blockquote><p><span>2023年11月11日</span></p></blockquote><p><span>上午回答了一个鱼友的问题：搭建博客需要什么知识吗？</span></p><p><span>我的博客主题风格是 Hexo 的 fluid 主题，Hexo 就是一种站点生成器，多用于搭建博客站点，还有 docdify、hugo、vuepress 等站点生成器，用来搭建博客站点或者文档站点，这些也需要了解。 </span></p><p><span>这是各个站点生成器的入口：</span><a href='https://jamstack.org/generators/' target='_blank' class='url'>https://jamstack.org/generators/</a><span> 在这个网站下，以 Hexo 为例：找到 Hexo ，点击 Themes，就能看到很多不同风格的主题了。</span></p><p><span>这些主题都是开源在 Github 上的，你可能要了解一下 Github，网络环境也要好，我这边必须开 Steam++ 加速器才能访问到 Github。 选择好主题后，就要下载安装，也就是进行博客搭建，详细的步骤在各个开源项目下的 README.md 文档中会有介绍，按操作步骤来就可以。进行这一步之前，需要你了解 node.js 相关知识（npm、nvm 等概念） ，你的电脑需要配置好 node.js 环境才能顺利执行命令、成功搭建博客。 </span></p><p><span>博客成功搭建之后，就要进行主题配置。这些你可以在各主题的官网中了解，比如 Hexo 官网：</span><a href='https://hexo.io/zh-cn/docs/setup' target='_blank' class='url'>https://hexo.io/zh-cn/docs/setup</a><span>。在官网中学习个性化主题配置，这个过程会很漫长，抽时间慢慢摸索和优化。 </span></p><p><span>当然，现在的博客只能在本地访问（如何在本地访问，所使用的主题开源项目下的 README.md 文档中也会有介绍的），要想让别人能访问到你的博客，就要进行博客部署了。我是部署在 Gitee 上的，至于详细的部署过程，B站可以找视频看，也可以上 CSDN、掘金、博客园等社区，看看别人记录的部署流程。部署流程还是很繁琐的，这里不再详述。</span></p><p><span>当然，博客部署的时候，也需要你了解 git 的相关知识，比如说基础的 git 命令，部署过程中会用到。你可以部署在 Gitee 、Github 或者云服务器上，我只尝试过 Gitee，访问还是挺快的（当然还是前面提到过的，你得先有 Gitee 账号）</span></p><p><span>部署完成之后，当然是要写博文了，个人博客就是用来记录生活的嘛。这个过程不用多说，要伴随你一生：写博文、上传博文、更新博文。。。 按我的理解，个人博客就像是一个线上记事本，属于自己的独一无二的记事本，这就是你的门面，你可以记录任何事，所以我还是很推荐搭建个人博客的。 </span></p><p><span>差不多就这些了，借这个机会又回顾了一遍博客搭建流程。我完全是把你当作小白来阐述整个博客搭建流程的，其中很多知识可能你都掌握了。总的来说，搭建博客需要掌握的前置知识还挺多，过程也肯定不是一帆风顺的，像我就是在B站上看过了大量的视频教程，才能了解到基本的、完整的流程，大概明白了自己要干什么。剩下的就是亲手搭建，慢慢摸索，当时我在这方面完全是小白，也还是慢慢搭建成功了。</span></p><p><span>就说这些吧，希望对你有帮助 😁</span></p><h2 id='前端框架学习经验'><span>前端框架学习经验</span></h2><blockquote><p><span>2023年11月11日</span></p></blockquote><blockquote><p><span>哎，我在星球的回复怎么找不着了。。。</span></p></blockquote><h2 id='全新的阶段开始了'><span>全新的阶段开始了</span></h2><blockquote><p><span>2023年11月14日</span></p></blockquote><p><span>为什么是全新的阶段呢？这就要提到我在今年暑假那会儿的规划了：</span></p><ul><li><span>九月下旬 Java 二级考试。昨天查分了，二级过了，欸嘿嘿嘿</span></li><li><span>11月5号软考（软件设计师 中级）。距离考试结束已经整整十天了，自认为发挥的还不错。自国庆假期以来，一直都在紧抓软考备考：信管网刷题、记忆大量知识点，占用了我相当大的精力，就是为了一张证书，可以在简历上再添一笔</span></li><li><span>12月中旬英语六级考试。奶奶的，做梦都不会想到，一个破六级能考第三次，身边的朋友们六级都是一把过，我怎么就过不了了呢。我还不信这个邪了，待会儿我就背背单词、看一篇英语外刊，11月下旬就开始大量做真题</span></li></ul><p><span>当然了，现在已经进入全新的阶段了，眼下备考六级是大事，其他还有什么鸟事呢？我来简单捋一捋：</span></p><ul><li><span>我上个月报名了明年4月份的蓝桥杯大赛，所以算法是重中之重，不过现在的算法练习还是以力扣为主，现阶段目标是能够在短时间内过一遍力扣热门 150 题。</span></li><li><span>项目优化：这个不必多言，Memory 聚合搜索平台和 Memory API 接口开放平台是我的主打项目，是要写简历上找实习的。这两天在疯狂优化 Memory 聚合搜索平台，快速完成搜索词建议、博文搜索和图片聚合搜索之后，就抓紧开始 API 接口开放平台的优化吧</span></li><li><span>八股文：最近两周疯狂地记忆八股文：Java 基础、JUC、JVM、MySQL、Redis、Spring等等，这八股文就是这样，常问的就是那几点，但你不能光死记硬背跟背课文一样，得形成体系，面试问答的时候用自己的理解阐述，而不是搁那背诵。人家问你一道题：如果出现了 SQL 慢查询的问题，你会如何解决？这就要根据自己的实际情况来回答，理论与实践相结合：执行 SQL分析计划，看这条 SQL 语句走索引没，是不是索引失效了（了解索引是什么，是干什么的、常见的索引失效情景）；是不是 SQL 语句太复杂了，连表查询，尽量使 SQL 简洁，减少连接的表的数量、查询字段不要设置成 * ，应该规定返回哪些字段等等；如果 SQL 语句没问题，那就是数据量的问题了：数据库中的数据过多，要应对高并发的读写请求，那就要考虑主从复制、分库分表、增加缓存等等，当然如果项目经理中没有遇到过海量请求的话，后几种方案可以说说理论，加上自己的思考和理解。这样就能回答的滴水不漏了。</span></li></ul><p><span>明天还得给那导员交检讨，上上周的事了，不就旷个课，还追着要</span></p><p><span>小组作业，这不就是个笑话，都是专业选修课了，听个乐就行了，有必要整个小组作业，上台答辩么。。</span></p><p><span>总之现在就是这么个情况了，以前的我可能还会焦虑，会感觉这日子不是人过的，烦的一天天的。但现在不一样了，这有啥烦人的，有网有电脑手机平板，就这么些破事，能有啥。</span></p><p><span>在校的时候，总对自己没信心，担心自己找不到实习；找到实习了，有感觉自己承担不了核心的业务，学不到什么东西，考虑这一切究竟值不值当；好容易找到工作了，还要处处受老板、同事那鸟气，工作上的事更加令人抓狂了。这算什么事，非得一天天把自己逼得跟上吊一样么，每天惶惶不可终日，好像明天就要被杀头了。</span></p><p><span>开心快乐，看淡一切，平平安安过每一天不好么</span></p><h2 id='英文阅读培养终身能力'><span>英文阅读：培养终身能力</span></h2><blockquote><p><span>2023年11月15日</span></p></blockquote><p><span>看这个标题还挺夸张是吧，但其实不然</span></p><p><span>英语外刊阅读</span></p><p><span>我突然发现了，长久以来养成的英文阅读习惯是逐词逐词地阅读，一个句子读下来，恨不得把这句话吃透，句意和语法结构捣腾的清清楚楚，整篇文章或者说一段话读下来就很吃力。但我读中文文章时，也没那么费劲啊，这个毛病得改改了</span></p><p><span>多读读外刊，培养英语阅读能力，什么几把六级考试，我只要能读懂文章，那阅读题还拿不下吗</span></p><p><span>从现在起，定一个终身目标：培养英文阅读能力，说不了一口流利的英语，但至少拿到一份英文外刊，能自信地阅读吧</span></p><p><span>作为一名程序员，自学一门新技术时，阅读官方文档也是家常便饭</span></p><p><span>系统梳理了一遍编程学习之路，跟舍友聊了一中午</span></p><h2 id='一切烦恼都来自人际关系'><span>一切烦恼都来自人际关系</span></h2><blockquote><p><span>2023年11月18日</span></p></blockquote><p><span>开设一个新的栏目，标题还没想好，主要是想记录一下人际交往中的表达技巧，我确实在尝试新的东西</span></p><p><span>昨天跟刚认识的同学聊了一个多小时，感触很深，我能够把开心带给身边的人，我也感到很开心。我的思维很活跃，有很多想要表达的东西，但我平时是不太喜欢讲话的，在一伙人中间，我肯定是最安静的那个。但这并不代表着我不敢讲、不喜欢讲话，我只是不讲话而已，恰恰相反，只要在我感兴趣的领域，我是很喜欢跟别人聊天的：周一上午跟导员作检讨，为什么要无故旷课；周三中午跟舍友聊专业规划、学习经验，扯了一中午；周五下午跟刚认识的女同学聊期末复习备考经验、未来规划，分享自己的烦恼、糗事。</span></p><p><span>人生在世，人际交往是很重要的一环。很喜欢《被讨厌的勇气》里提到的一句话：</span><strong><span>一切烦恼的根源都来自于人际关系</span></strong><span>，非常推荐大家看看这本书</span></p><p><span>别人听我讲完话，能学习到很多，更加清晰的规划，更加乐观地面对生活等等，这就让我感到很满足了，我能够输出一些东西，我的输出是有价值的</span></p><p><span>一个月前开设的新栏目：《个人成长之路：计划演进与思想蜕变的见证》，如果说这个栏目是记录我的内心所想的话，那么今天开设的新栏目：《倾诉心声，沟通之道：人际交往中的表达技巧》，就是关于如何把内心所想表达出来，相信我，这真的非常重要</span></p><p><span>先说这么多吧，这个栏目涉及的东西还挺杂，随便写写</span></p><h2 id='放空心灵物我和一'><span>放空心灵，物我和一</span></h2><blockquote><p><span>2023年11月19日</span></p></blockquote><p><span>我们经常会有这种感觉：上午又是面向对象C++，实在不想听；妈的，下午满课，烦死了，真不想去了；那婆娘又要实验报告了，上哪找去；这老师啥都不教，一天天逼事还多；这周事也太多了，好麻烦啊。。。。</span></p><p><span>你经常会觉得生活很枯燥、很乏味，也许你也想过尽可能让自己不那么消极、不那么难过，但总是事与愿违，越想越烦燥，这苦逼日子真是一天都不想过了</span></p><p><span>学习提不起兴趣，刷视频又感到焦虑，哪都不想去，不想说话，经常一个人发呆，又不想发呆，想找人聊聊天或者吃顿好的、出去玩玩？但又哪都不想去，什么都不想干，游戏也不想打，整个人闷闷的，胡思乱想，想着为什么感觉没事干啊，看见人就烦，好焦虑，好无聊</span></p><p><span>当你感到烦躁不安、觉得这苦逼生活真操蛋时，你不妨尝试从第三者的角度观察你自己</span></p><p><span>你不妨设想一下，你的身边无时不刻又一个摄像头，每天都像幽灵一般围着你转悠。你从这台摄像机中窥探自己，观察自己，这种行为不就像是你在观察别人一样吗</span></p><p><span>但是你平时哪有闲心观察别人？我看见他们就烦，懒得搭理，我自己一个人呆着不就行了，我还观察他们？闲的慌啊，我对他们又不感兴趣，我天天忙的要死，他们干什么关我什么事</span></p><p><span>那你对你自己总感兴趣吧，或者是说，你是最了解你自己的，你今天干了什么，想了什么，上早八烦的不行，好困啊，上完这节课该干点什么呢，今晚吃点啥好，还有作业没提交呢。。这些都是你能观察到的</span></p><p><span>你能看见的是，你跟其他同学一样，在校园里走动，行色匆匆，忙着上课、忙着食堂占位置、忙着跑办公室交材料，你能看到这些，但你看不到的，是你的心态。</span></p><p><span>跟你在路上见过的、和你擦肩而过的同学们一样，你不知道现在观察到的你的心态是怎样的，你不知道你自己或者是他们在想什么，单从情绪上来讲，是焦虑呢？还是开心呢？是什么让他们感到这么开心的？他们又为什么这么焦虑呢？我不知道，我不关心，跟我有半毛钱关系吗？</span></p><p><span>是这样的，跟你半毛钱关系没有，那你的所有想法、心情、情绪，你的那些破想法，你的那些破事，爱怎么处理怎么处理，跟别人全然没有关系，一切都是你自己导致的，都是你自己的原因，从始至终都他妈是你自己在精神内耗，跟别人没得半毛钱关系，这里根本没人在乎你，没人愿意了解你，你还不高兴，你不高兴给谁看，这值得吗？？不值得，没有意义的。</span></p><p><span>你想通了吗？为什么不选择尝试放空心灵，让自己更加纯粹，更加简单呢？心旷神怡、怡然自乐，以这样的心态过好每一天，每一天都有新的体验，每一天都属于我自己，每一天都是充实美好的</span></p><h2 id='今朝有酒今朝醉'><span>今朝有酒今朝醉</span></h2><blockquote><p><span>2023年11月24日</span></p></blockquote><p><span>今朝有酒今朝醉，明日愁来明日愁</span></p><h2 id='沟通和表达能力'><span>沟通和表达能力</span></h2><blockquote><p><span>2023年11月28日</span></p></blockquote><p><span>我只能说这个能力非常重要</span></p><p><span>你去宿舍楼里看看，去餐厅、教室，或者观察那些行色匆匆的大学生，全他妈废物我只能说</span></p><p><span>现在的学生，从小学到大学，只知道死读书，读书读傻了都，上个大学跟上高中一样，背个书包就去外边自习，喜欢一个人待着，美其名曰 ”既然不合群，何不做真正的自己“，我现在听到这种话真的感觉很可笑，很幼稚的，中二少年犯病了不是吗</span></p><p><span>与别人沟通是很重要的，你能跟别人侃侃而谈，跟同学、老师交流，买饭时跟师傅阿姨交流，这都是很重要的，这么简单的东西，我不说别人，仅在校大学生中，有些人直到毕业都学不会</span></p><p><span>我以前一直在强调，要放空心灵，不要焦虑啥的，但不是说就经常一个人待着，不跟人交际，还自以为独树一帜，”鸟兽才会成群，猛兽只会独行“，那只是傻逼一个</span></p><p><span>我想找点时间，一个人，想到什么说什么，锻炼自己的临场表达能力，不要觉得尴尬</span></p><h2 id='又一个新的阶段'><span>又一个新的阶段</span></h2><blockquote><p><span>2023年11月29日</span></p></blockquote><p><span>今天的阅读到此为止了，全新的阶段计划：</span></p><ul><li><span>实现 Python 的讯飞星火 API接口调用</span></li><li><span>总结需要记忆的 Java 八股：Java 基础、集合、并发、JVM、IO流、MySQL、Redis、ES、微服务，应该要划分的更加细致一些，总而言之，这又是全新的一轮八股记忆，和以往不同，这次要尽量把重难点的、容易忘记的知识点，用自己的话说出来，写下来</span></li><li><span>至于操作系统，计算机网络，也是很重要的，虽然已经过了几遍了，但还是容易忘，就是因为光忙着记忆不总结了</span></li><li><span>还有俩项目：接口开放平台和 聚合搜索平台，关于这两个项目的业务流程、开发中遇到的挑战，这些问题是很关键的，直观体现出你的项目开发水平，简单讲，就是能证明这项目是你做的，不是从哪个旮旯抄来的。</span></li><li><span>那么对于项目的八股记忆，我的想法是星球面试题总结 + 鱼友面经，只要多看一篇面经，那就多了一次面试经验</span></li><li><span>先简单写这些吧</span></li></ul><h2 id='第三个地方'><span>第三个地方</span></h2><blockquote><p><span>2023年12月8日</span></p></blockquote><p><span>我们之所以会感到不开心，感到烦闷</span></p><p><span>都是因为在我们心底，没有第三个地方</span></p><p><span>这个地方独立于学校里的同学琐事、课堂作业，只要我们到达这个地方，所有的烦恼都能一扫而空</span></p><p><span>这个地方可以是和最要好的朋友朋友的一场聚会</span></p><p><span>可以是读自己最喜欢的一本书</span></p><p><span>可以是追自己最喜欢的一部剧</span></p><p><span>总之它能让你暂时忘记你的烦恼，忘记周遭的一切，全身心地投入到其中并享受自我</span></p><p><span>去寻找这样一个属于自己的地方吧</span></p><p><span>借助这个暂时的空间，排解苦恼</span></p><p><span>在一天忙碌的学习或者工作生活之后，在被作业或者工作折磨了一晚上之后，去到这样的第三个地方，彻底地排解苦恼，哪怕这只是暂时的</span></p><h2 id='该死的万柏林区'><span>该死的万柏林区</span></h2><blockquote><p><span>2023年12月17日</span></p></blockquote><p><span>注：今天是18号，这篇吐槽也是在18号下午抽时间着手开始写的，不过为了让我更加有代入感，文章创作日期就标成17号了</span></p><p><span>从昨天晚上一直到今天中午，一直在外头瞎逛，差点把平板给搞丢了，还好最后找回来了</span></p><p><span>找个时间，记录一下这糟糕的一天</span></p><p><strong><span>吃海底捞、搓麻将、打台球、挨冻五小时、万柏林地下停车场</span></strong><span> 🤡</span></p><blockquote><p><span>2023年12月23日</span></p></blockquote><p><span>	</span><span>下午五点半，六级考完啦，这次感觉稳了。从十一月底开始，每天一份六级真题，做了有十天，专攻两篇阅读题和一篇仔细阅读。考前又疯狂地记忆了翻译模板、作文模板、高频词汇，上了考场那叫一个游刃有余。这次仔细阅读肯定是满分，阅读题也能看懂，作文翻译写得很顺手、听力一个都听不明白。但是整体感觉还不错，考了三次，这次状态是最好的。</span></p><p><span>	</span><span>考好了当然是要奖励自己了，直接去曦圆餐厅三楼吃自助小火锅去。</span></p><p><span>	</span><span>呐，吃完就在三楼自习了一会儿，舍友拉我今晚十二点出去吃海底捞，就当是宿舍团建了，大家也都去了，我也去吃一顿，见见世面也不错。</span></p><p><span>	</span><span>晚上十点半，我们从宿舍出发，在校门外打了两辆出租，二十分钟不到就到达目的地了。过了一条街，拐进一个小胡同，坐上电梯，就进到一家海底捞餐厅了。不得不说，真豪华啊，找好位置坐下来，还有免费的水果、免费的饮料。我们是十二点之后才点餐，有优惠嘛，闲着也是闲着，打打游戏、刷刷视频啥的。</span></p><p><span>	</span><span>到了饭点，也就是过了十二点，就可以点餐了。拿个平板，瞅见哪个看上去好吃就点哪个，菜是真的贵，每份基本都是二十多块起步。我们一共六个人，点了大概七百多块钱的东西，算上优惠，也就每个人花九十多，值了。</span></p><p><span>	</span><span>吃饭的过程就不必多说，四份汤底：清汤、番茄、麻辣，还有一个忘了，反正最后混一块了，都成麻辣汤底了哈哈哈。好吃的很多：肉卷、白菜、虾滑、饺子啥的，因为下午六点多刚吃完小火锅的缘故，晚上还是有点饱，吃了一半就中场休息了，最后就是喝喝饮料、吃吃水果啥的。海底捞餐厅是真不错呵，旁边还有过生日的哥们，服务员也非常热情，唱着生日歌。也会有小姐姐过来帮忙把饮料续满。</span></p><p><span>	</span><span>吃了两个小时，边吃边玩，休息好了准备走人的时候已经是凌晨两点半了。不过这里还是那么热闹，海底捞一直都是这样的吗。我们是大学生，又是十二点之后点餐，除了价钱有优惠，走的时候还在门口领了点小零食。坐上电梯，出来上了街，路上车也不多了。</span></p><p><span>	</span><span>我们走了十五分钟吧，到了一家台球馆，想着在这里呆一会儿的。结果这里这会儿不收客，只好走了。</span></p><p><span>	</span><span>下了楼，打了两辆出租，又到了另一家台球馆。这家挺不错呵，值班的小兄弟还挺帅的，我们订了803号房间，就能在里面呆三个小时了。里面有两张沙发，一张麻将桌。两个舍友当时就撑不住了，躺沙发上睡了。我跟另外三个就开始搓麻将，我从来没碰过麻将，这还是第一次摸。他们教我搓了两三盘，后面也就慢慢熟悉了。从两点半搓到五点多，年轻人就是精神。我也算入门了，学了点麻将的基本玩法。不过要我说，这麻将是真没意思，真就全程在赌，没点实力在里边，就自己根本左右不了局势的感觉，全靠祈祷自己手里的牌好点，加点运气成分，能一把胡了。有这时间玩玩斗地主、象棋啥的也比这有营养。挺没意思的，也没多大精力去研究，最好不要碰这东西。</span></p><p><span>	</span><span>打完麻将休息了一会儿，就快五点半了，出去跟他们打了会儿台球。这台球挺好玩的，以前只在手机电脑上玩过，真要我拿个杆子打球，还是很有难度的。刚开始连杆都握不好，击球就更不用说了，完全打不到。不过也就那样了，打了几杆之后就会了，还是能把球击进袋的。玩了有半小时吧，我们订的房间也快到时间了，准备撤了。舍友进房间拿包，找了一会儿没找着。另外几个帮他找也没找着，这下就有点问题了。那包里有啥东西呢？舍友 A 和舍友 B 的手机充电器、舍友 C 和我的平板都在里边。</span></p><p><span>	</span><span>2023 年 12 月 17 日凌晨，2023 年最黑暗的一刻</span></p><p><span>	</span><span>这下可真他妈玩大了，这包能丢到哪里去？找了十分钟，“确认”不在这个台球馆后，我们只好承认可能落别的地方了。可能落哪里呢？海底捞餐厅？第一家台球馆？来这个台球馆时坐的那辆出租车？这下可就麻烦了，一下子我们兴致全无，东西都他妈丢了玩尼玛啊，赶紧打车回去找，先从第一家台球馆找起。</span></p><blockquote><p><span>2023年12月29日</span></p></blockquote><p><span>	</span><span>还是打了两趟车，我和剩下两位坐第二趟车。凌晨六点多了，寒风刺骨，我们在楼底下等了15分钟，那司机才慢悠悠地开过来，差点没冻死。“什么？书包落网约车上了？那还是赶紧报警吧，一晚上赶趟的车上，那人可是来来往往的，指不定就把包顺走了”，这位司机大哥这样说。哪能有什么办法呢？目前还不清楚是不是真的落出租车里了，仅仅“排查了”这家麻将馆。我们赶到第一家台球馆这里，坐电梯上了5层，在大厅前的长条沙发上坐下了。</span></p><p><span>	</span><span>可是人家四点多关门了，要等到白天十点多才会有师傅开门。还能怎么办？等呗。等到这家店门开了，去查一下监控录像啥的，就清楚那包是落在这家台球馆了还是出租车上了。这个破地方，三个半小时前我们吃完海底捞，在这里停留了不到五分钟就走掉了，现在却折返回来，眼瞅着那紧锁的店门却不能进去查看一番。我们几个一直相跟在一块的，都在努力回想这个包到底能会落在哪了：吃完海底捞有没有带出来？没带出来才算好了，放在海底捞绝对丢不了，比扛在自己肩上都放心。但问题是我他妈清清楚楚回忆起这个包是绝对从海底捞带出来了，三个半小时前就在这家台球馆沙发上小坐的那会儿，我可记得那个包就挎在舍友的背上。后来下了楼，打了车，过马路的时候，那包肯定也还在他背上。在麻将馆没找着，那他妈能丢到哪里去？最不想面对的结果还是一股脑涌入脑海：包落在出租车上了，那出租半夜跑了多少趟我们不知道，但我们很清楚如果真的在那辆出租车上的话，八成是找不回来的，只好是后续报警处理。</span></p><p><span>	</span><span>那坐在这个大厅干嘛呢？线索都断了，几乎已经肯定包是落在出租车上的了，最稳妥的方法应该是联系那个出租车司机了。但不能仅靠回忆就妄下定论。在这里等会儿，等到明天早上十点半，等到这家台球馆店门开了之后，进去找一找，确认包是不是落在这家台球馆了；没有落在这里的话，再找人家调下监控，确认这个包是否真的从这里被带出去了。确定了这些，那基本就确定了这个包，这个装着我的新平板的包，这个装着我甚至从来都不舍得带到教室把玩的新平板的包，真的落在那辆“人来人往”的出租车上了。</span></p><p><span>	</span><span>接下来我度过的，是令我终生难忘的三小时</span></p><p><span>	</span><span>这会儿已经快七点了，外面天刚蒙蒙亮。三个舍友下楼出去吃早饭去了，剩下我和另外两位坐在大厅的沙发上等候。我之前一直没强调的一点是，这个大厅非常冷，温度非常低！你可以想象十二月中旬的天气，你要是在晚上八九点钟那会儿跑出来，站那马路牙子上，那天气是真能把人冻得直哆嗦。再说回这个大厅的结构吧：靠墙这边是两张沙发，每张沙发并排刚好能能坐满三个年轻人。两张沙发间隔五米左右，呈九十度直角状分靠两侧，每张沙发面前都有一个长条形茶几。我和舍友 A 坐在一侧的沙发，舍友 B 坐在另一侧。在我们落座的对面是两座电梯，我左手边的旮旯里是一台饮水机，不过看起来更像是贩卖机，虽然那破机子既取不到水也买不到什么零食。我右斜对面的就是那扇台球馆的店门，那扇该死的上了好几道锁的店门。</span></p><p><span>	</span><span>我身边的舍友 A 突然一副坐立难安的模样，他越发焦急起来。他的新平板也在包里，这个包就是他的，是他挎着包走了一路，他现在可着急懊悔死了。他的口中念念有词，焦急又懊恼地叫唤着要“干脆跳楼去死吧”。他低声叫骂着，随即一屁股坐进沙发里，这副颓丧的模样，跟他上楼之前判若两人。他的叫骂着实把我逗笑了，当然我笑不出声，我快要难过死了。他的叫骂太直白了，就像小孩子犯错，被爹妈狠狠教训了一顿后，从心底暗暗发出的毒誓。所以即便是在这种场合下，那几声叫骂听起来还是很可笑，跟他此刻扭曲的五官一样可笑。这个家伙太困了，躺沙发上睡下了。他这一趟就占了两个人的位置，我就没法躺了，我也没心思去躺一会儿，尽管我已经一夜没合眼了，可我实在睡不着。没过一会儿，吃完早饭的那三位回来两位，还有一位困的要死，打车回宿舍睡觉去了。过了一会儿，坐在对面沙发上的舍友 B 也起身背起书包下楼回去了，离开了这个该死的鬼地方。我表示理解，毕竟人家的东西可都在自己身上呢，本来通宵吃个海底捞、玩玩麻将、打打台球就能直接回去补觉了，犯得着跟着我们坐在这鸟地方等着这家台球馆到十点半开门吗？傻逼才会这么干。他不是傻逼，他走的可利索了。那这里就剩下我和另外三个舍友了，就分别叫他们舍友 A、B、C 吧。他们要么在沙发上躺下解解乏，要么坐沙发上闭上眼睡会儿，陆续都休息了，还有一个他妈打呼噜还贼大声。</span></p><p><span>	</span><span>我还是没睡，我也没心思去睡，尽管我已经一夜没合眼了，可我实在睡不着。</span></p><p><span>	</span><span>本来昨天下午考完六级高高兴兴的，超常发挥了嘛。快乐地去吃了顿小火锅，却被告知晚上全宿舍搞团建，出去吃海底捞，通宵打麻将。海底捞真好吃，尽管距离吃完海底捞已经过去了接近五个小时，还是不由得回味一下。倒不是说那里的食物有多香、水果有多甜，只是感觉第一次去吃海底捞长了长见识而已。现在坐在冰冷的大厅里，回想起这些，感觉更像是一场梦。不管怎么说，这次考六级还是很顺利的，虽然听力题做得不咋地，全程几乎盲听。对了，耳机还没电了，我还得边听边忍着那噪声。其他的发挥的还不错，看来这次突击刷了十套六级真题还是挺管用的，也算是小有成效。这几把六级总共考了三次，就数这次有信心一定过，真不错呵！可惜我的平板已经落在那辆出租车上了。考好了就该奖励自己，考完我就背着书包去餐厅三楼吃自助小火锅。虽然自从十月中旬体测结束那天下午第一次校内小火锅之后，到今天的这段时间里，是每隔半个月吃一次的样子，但是我觉得这次的小火锅格外的好吃。吃饱喝足了，在餐厅坐下来看了会儿《计算机操作系统》教材。六级考完了当然可以全身心投入到期末复习当中了，惬意的很嘛！可惜我的新平板已经丢掉了。大晚上不睡觉，宿舍组团出校门，在半夜一点多吃海底捞，通宵打麻将、打台球，这确实是一次全新的体验。上次这么熬夜，还是初二那年。初二那会儿有一次放星期了，爸妈都上夜班，晚上十点多就都去上班了。家里剩下我们兄弟两个，熬夜打了一晚上王者荣耀，一直打到凌晨七点多他们下班回来。当然，他们刚进门我们就装睡了，一点没被发现。看来我俩跟爸妈一样，也算是“工作”了一晚上没合眼。总之，昨天晚上到今天凌晨的这段时间，我打心底里是很快乐的。年轻人嘛，偶尔熬个夜、通个宵怎么了，这才是生活嘛！可惜我的新平板已经彻底找不回来了。</span></p><p><span>	</span><span>八点了，我在这个该死的大厅坐了有一个半小时。</span></p><blockquote><p><span>2024年1月14日</span></p></blockquote><p><span>	</span><span>今天是正月十四号，此刻我正坐在返乡的火车上。距离平板丢失事件快一个月了，但是当晚的所有事情，仍然历历在目，让我久久不能忘怀。这样的更新频率是有点奇怪，原本只是一件小事，我却用了一个月的时间断断续续地回忆，并尝试用文字表达出来。也正是因为这篇回忆，我决定开启我的写作之旅：用文字记录我小时候的学习生活琐事。</span></p><p><span>	</span><span>于是我开始着手这篇回忆录的写作，题目暂定为《岁月如歌，我的人生回忆录》。这无疑是一项壮举，至少我这么认为。能够舍弃那些华丽的辞藻，用简朴的语句记录自己的童年时光，回到过去的那些岁月当中寻求幸福，是我一直以来的想法。在刚上大学那会儿，每天晚上我都会在自习室里待到十点多，学习那些无聊的课本知识。那会儿我就有了这样的想法：给自己写一本自传。产生这样的想法的原因有很多。最现实的原因是我已经有了足够的能力和资源，去做我中学那会儿想做却不敢做的事。当然更重要的，是因为我的童年真的很精彩，很传奇，它太有吸引力了，我很想把它们写下来。我们兄弟俩经常在一块回想那些童年往事，聊的不亦乐乎。那是属于我们两个的共同记忆，能够回忆起那些故事让我们很开心。有太多的故事需要被记录了，有太多的想法需要被表达了，所以我决定不再磨蹭了，从当下开始，执笔描绘我的童年生活图景吧。</span></p><p><span>	</span><span>刚才聊了很多关于给我自己写一本自传的话题，那么现在，就让我们把目光转移到主线上来。</span></p><p><span>	</span><span>电梯里面的墙壁是玻璃窗，能直接透过窗户看到太原坞城路的大街。</span></p><h2 id='一篇有关-spring-boot-的论文'><span>一篇有关 Spring Boot 的论文</span></h2><blockquote><p><span>2023年12月18日</span></p></blockquote><p><span>	</span><span>题目暂定为 </span><code>一篇有关 Spring Boot 的论文</code><span>吧，毕竟写什么还没想好</span></p><p><span>	</span><span>最近有个 Java 期末大作业，想法已经确定了，不做网站了，麻烦。搞一篇 Spring Boot 相关论文就行。跟其他同学的态度不一样啊，我觉得写这么一篇论文还是很有必要的，如果我能把对 Spring Boot 相关介绍结合一年多来的基于 </span><code>Spring Boot</code><span>的网站开发经验，写一篇内容充实的论文的话，这也更能加深我对 </span><code>Spring Boot</code><span> 的理解，当作今年的年终总结也不错</span></p><p><span>说归说，这个 Spring Boot 论文该写什么呢？好像也没啥写头，不过思路是明确的：给予实际的开发经验，介绍什么是 Spring Boot</span></p><ul><li><p><span>什么是 </span><code>Spring Boot</code></p><ul><li><span>历史，持续发展</span></li></ul></li><li><p><code>Spring Boot MVC</code><span> </span></p></li><li><p><code>MyBatis</code></p></li><li><p><code>SSM</code><span> 三层架构实现基本的 Web 应用开发</span></p></li><li><p><code>React</code><span>、</span><code>Vue</code><span> 前端框架</span></p></li><li><p><code>Maven</code><span>，一个项目管理工具</span></p></li><li><p><span>使用 SSM，快速编写一个 demo 示例代码：</span></p><ul><li><span>使用 IDEA 开发工具，快速构建 Spring Boot 工程</span></li><li><span>快速编写 Controller 层</span></li></ul></li></ul><h2 id='年度总结计划10'><span>年度总结计划1.0</span></h2><blockquote><p><span>2023年12月18日</span></p></blockquote><p><span>我决定了，着手开始写今年的年度总结，涉及的内容也应该比较宽泛：</span></p><ul><li><span>过去一年来的收获</span></li><li><span>对未来生活的构想</span></li></ul><p><span>刚想提笔，发现上次写作已经是整整二十天前了，这段时间的创作欲望很差啊。</span></p><p><span>其实是因为从11月底开始，我就在疯狂备考英语四六级了，每天除了背单词、做真题之外，就是在学习如何熟练使用 </span><code>Vuepress</code><span> 快速构建静态文档站点、着手开发 MemoryTools 工具集软件、人工智能与人脸识别 PPT、计网 / 操作系统 / C++ 实验报告、习思想论文 2500 字、生态与环保论文 3000字（手写）</span></p><p><span>哇。这么多烂事我都已经处理好了，说实话也没感到有多大压力，这样看起来我的执行效率还是相当高的</span></p><p><span>在 </span><code>Java</code><span> 学习方面，进度也没有丝毫拉下，从十月中旬开始，在软考正式备考半个月后开始，我就已经在系统地梳理 </span><code>Java</code><span> 八股文了。到目前为止，也是过了整整一轮，很显然有一部分已经忘掉了。在项目方面，也在认真优化 Memory API 接口开放平台和 Memory Search 聚合搜索平台，计划快速扩展几个聚合搜索平台的优化点之后，尝试上线，接口开放平台的话，一方面是云服务器配置显然不足，另一方面是我太懒了，最近又力不从心，就不尝试上线了</span></p><p><span>不过很显然，我计划拿这两个项目去投简历了，简历中的项目，主要追求两点：</span></p><ul><li><strong><span>项目的复杂度或亮点</span></strong><span>：一个完整的项目、一套优秀的系统，包含完备的功能实现、项目开发背景、多处技术亮点，这样的项目放在简历上，那肯定是相当耀眼的。如果你对项目的开发流程很熟悉，如果在面试过程中遇到面试官让你手撕项目的情况（比如说简单介绍下项目的功能，它具体做了什么事；项目开发过程中，有没有比较难忘的经历或者说最令你印象深刻的点是什么，你又是如何解决这个问题的，解决思路是怎样的；某个功能很有意思，你能说一说它的执行原理吗？这其实就是考验你对功能实现的理解程度了，很大程度上能考量出你的业务的理解水平和真实的技术水平），如果你能对面试官对该项目的的任何提问都能够游刃有余，回答地滴水不漏，这就是你实力的体现，是你真实的技术水平的体现，而技术水平对于 IT 行业的打工人来说，其重要性不言而喻。总而言之，项目亮点绝对是简历中的加分项。</span></li><li><strong><span>项目的真实可靠性</span></strong><span>：简单说就是如何让别人信服这个项目是你做的，你项目再精彩再有水平，不是你做的或者说你就完全没理解，连基本的项目运行流程都他妈说不上来的话，这样的项目不是加分项，反而是减分项，让别人觉得你这人很恶心，因为你把别人的东西假装是你的，还拿过来糊弄他。上面谈到的项目亮点是简历中的加分项，要注意这是有前提的：你对该项目的开发流程非常熟悉，你能够清晰地给别人介绍清楚这个项目的开发背景、技术支持、开发过程中中遇到了什么样的难点，你的思考过程是怎样的，最终敲定的解决方法又是什么，有没有很好地解决这个问题。你能够分毫不差地讲清楚各个功能模块的编码思路、实现流程、痛点分析等，对着面试官噼里啪啦一顿输出，这就很能增加这个项目的真实可靠性，让面试官对你的项目的亮点赞叹不已，更能对你的口才赞不绝口，让他觉着他面前的这个小伙水平还挺高，何不向他抛出橄榄枝，拉他入伙？hiahiahia</span></li></ul><p><span>说多了，总而言之，我的想法是既然我已经决定不上线接口开放平台了，我总得在简历上写点什么别的东西来增加项目的真实可靠性。其实常见的增加项目真实性的方法无非就三点：尝试部署上线、编写开发者文档、将代码上传至远程仓库。那很显然，项目不上线的话，还有另外两种方法可以用来做补救嘛。</span></p><p><span>那么具体的如何编写开发者文档、如何写好远程仓库中的 README.md 文件，这要写出来还是很费劲的，在这里暂且不表，今天的任务主要还是构建思考下年度总结怎么写，慢慢想，慢慢写，在元旦之前搞出来就不错了</span></p><p><span>其实上面写的也挺不错的，辞藻没有很华丽，但看得出来还是挺专业的，写作水平提升就是这样，没有别的什么好方法，动笔 / 动键盘直接写就行了</span></p><p><span>那今天的年度总结报告就写到这里了，下次再见</span></p><p><span>上午写一点，中午写一点，下午写一点，晚上写一点，写个十来天应该能完成</span><strong><span>（2023/12/21晚）</span></strong></p><h2 id='年度总结计划20'><span>年度总结计划2.0</span></h2><blockquote><p><span>2023年12月22日</span></p></blockquote><p><span>年度总结开始了，今天写点啥呢？开启一个全新的板块：我的编程学习之路</span></p><p><span>今年对我影响最大的，当属加入了鱼皮的编程导航知识星球，对我的编程学习有了很大的帮助</span></p><p><span>项目开发经历：</span></p><p><span>年前年后：黑马点评、瑞吉外卖；3 - 4月份：用户中心；4 - 6月份：伙伴匹配；7- 12月份：聚合搜索、接口开放、智能分析</span></p><blockquote><p><span>2023年12月31日</span></p></blockquote><p><span>	</span><span>瞧瞧这时间过的多块，两年前的这个时候我开始玩轴心与同盟，由于这游戏年代过于久远，找不到下载资源。好不容易成功下载，又因为画面卡顿，被迫上网查找新的解决方案。2021年12月31日，终于解决了所有问题，成功赶在2021年最后一天，我的电脑能畅快地玩轴心与同盟了。</span></p><p><span>	</span><span>2023年的最后一天，用最少的文字记录一下我这一年的过往吧。</span></p><p><span>	</span><span>这已经是上大学以来，第三次跨年了。前年刚迈进大学校园那会儿，那次跨年是最让我印象深刻的。没有别的什么晚会，没有乱七八糟的祝福，我就坐在我的床上，百无聊赖地刷着B站视频、打打游戏啥的。跨年了就是元旦了，那会儿元旦还放了三天假。正月四号开始考试，考到八号，考完直接走。去年的话就不必多说了，十二月九号就离校了，元旦都是在家里过的。没有记错的话，应该是元旦前后染上新冠肺炎了，那晚上高烧不止，我爸愣是半夜十一点从厂子偷跑出来，去镇上买了退烧针。接着回来就给我来了一针，烧很快就退了。</span></p><p><span>	</span><span>写点什么东西呢？感觉是没啥写头的。这是我第一次写年终总结，也确实觉得没话说。从时间跨度上来看，今年大致可以分为四个阶段：元旦到劳动节、劳动节到暑假结束、秋季开学到国庆节、国庆结束到年末。为什么这么分呢？那当然是根据我的学习进度来划分的：</span></p><p><span>	</span><span>元旦那会儿，就想着现在已经大二了，人家有的优秀的同学，大二暑假就去互联网大厂实习了。我当然没这个本事，但我是有这个信心的。年前，我就加入了编程导航知识星球，自以为大有所用。刚回家那会儿还在看黑马的 Spring Boot 教程视频呢，差不多元旦前后就看完了接着就是看黑马的瑞吉外卖 + 一条龙 Redis 教程，又做了黑马点评。断断续续地看了一个多月就不看了，黑马点评在开学之后又看了一个多月，最后愣是看不下去了，直接掐掉了。至此，再没有开启过任何一套完整的视频教程，我已经不再喜欢视频教程了，冗长乏味。</span></p><p><span>	</span><span>剩下的学习旅程我几句话说完吧，毕竟比学习精彩的事多了去了：年后开学不久，开始做星球项目。去年暑假那会儿跟着韩顺平学 Java 基础，做了一个坦克大战。今年年初那会儿突然想捡起来再学一学 Java 多线程，就上网找了视频，开发了一个黄金矿工小游戏。最重要的莫过于使用 Hexo 搭建了第一个个人博客网站，从此我有了自己的招牌。从项目学习、Java 基础巩固，到第一次成功的项目部署，我学会了很多东西。七月份我就定下了今年下半年的目标：Java 二级、软考中级、英语六级。目前来看，结局是完美的，六级也应该过了。</span></p><h2 id='年度总结计划30'><span>年度总结计划3.0</span></h2><blockquote><p><span>2023年12月31日</span></p></blockquote><p><span>今年的最后一段文字：</span></p><p><span>现在是31号晚11点41分，距离2023结束还剩19分钟，赶紧写点东西出来</span></p><p><span>期末考试在即，希望明年能考出好成绩，绝不挂科</span></p><p><span>今晚一边看 B 站跨年晚会，一边着手学习总结分布式服务架构的实现细节，看了几篇博文，对这块内容有所了解了</span></p><p><span>最近需要多看一些架构方向的博文了，除了 Java 基础八股文，对 Spring Boot、Mybatis、Maven、Dubbo、Netty 网络通信框架、Nacos 注册中心、服务一体化 -&gt; 微服务架构、降级熔断、网关、负载均衡等等，都需要捡起来学一学，记忆记忆。</span></p><p><span>看到了星球内的好几位同学在今晚发了自己的2023年年终总结，我也有这个想法的，但很可惜，我没有写总结的习惯，短时间内写不出来2023年度总结。</span></p><p><span>项目经验（开发者文档）、Java 八股、算法等，力扣算法打卡，今晚有个鱼友，力扣每日打卡达到了每天最多提交五十次的记录。力扣热榜题目 100 道，在十一月份初开始着手刷题，到了十二月初截至，一共刷了六十余道题目，所有的简单题 + 中等题已经全部完成一次刷题，基本达成今年算法目标。从后天开始，在C++、计网、操作系统两天特种兵考试结束之后，直接开启2024年力扣算法提打卡：每日过至少十天的力扣算法提打卡记录。</span></p><p><span>还有六分钟，2023年的最后六分钟，再写点什么呢？我没有写总结的习惯，并不是说我对自己目前的状态不了解，恰恰相反，今年的我做的最多的事情就是“每日三省吾身”，努力提高自己的认知水平。每过一段时间我就会重定义现阶段的任务目标，合理规划未来短时间的努力方向。如果非要说今年最大的收获是什么，那就是：心态更加平稳，心智更加成熟，方向更加清晰，目标更加明确！</span></p><p><span>三，二，一</span></p><p><span>零点了，新年快乐！</span></p><h2 id='2024新的开始'><span>2024，新的开始</span></h2><blockquote><p><span>2024年1月4日</span></p></blockquote><p><span>今天上午，四门专业科目期末考试结束了，八号下午还有一门习思想，不足挂齿</span></p><p><span>今天，我又要对未来三个月作个规划，也顺便对过去一年的学习之旅画个句号。下午学校发了通知，寒假校内秩序管理，简单总结就是正月十五号之后就不能留校了。申请留校很麻烦的，得找点借口，比如考研、科研项目、校内实验等等。各个学院如果有寒假留校的，还需要有一位学院内辅导员留校值班，保证学生人生安全。还想着八号考完之后投一投简历，寒假期间找个实习来着，现在看来不仅仅是外界阻力大，自己也没多少心劲了。</span></p><p><span>那么我这半年干了什么呢？想起来还是很令我满意的。相比半年前，我的技术水平更加高了，我的表达能力也提升了不少。光靠贫瘠的文字完全表达不出半年来我的成长，只好是自己在心里体会。暑假定下的目标，在寒假前夕已经全部实现（没有开玩笑）：</span></p><ul><li><span>开发自己的网站：这一点有过想法，当然也确实付诸实践了。我做了两个项目：暑期八月初着手开发 PictureMemories 壁纸下载小程序、九月初着手开发 Memory 缘忆交友社区。</span></li><li><span>快速搭建自己的文档站点：我之前想过把个人博客上的一些内容整理到新的文档站点上，更加便于管理，奈何不会搞文档站点。去年五月份左右，看过星球内的 Vuepress 搭建教程，暑假回去跟着官网搞了一个 demo 文档站点就停手了。在十一月底，为了能够给 Memory API 接口开放平台写一份漂亮的开发者文档，我又尝试了快速构建 Vuepress 静态文档站点，学习使用了更加美观的 vdoing 主题。最后，给 Memory Tools 工具集软件写了第一份开发者文档。</span></li><li><span>设计简历：这个想法在暑假就有了，结果直到开学还没有尝试了解过。九月开学，我开始慢慢学习了解简历优化技巧。十一月初，班里需要收集每位同学的一份实习简历，虽然是走个过场，我还是认真做了人生中的第一份简历，这就是一个漂亮的开始。到了十二月底，每天上午都会对着简历小修小补，慢慢完善。</span></li><li><span>荣誉经历：我没有加入校内的任何社团、没有参与选举入党积极分子、没有哪些建模大赛经历，但是一些简单的证书我必须要拿下。七月初，我报名了下半年九月份的 Java 二级考试。从七月份中旬开始，我了解到软考的存在，着手备考和搜集资料。从了解到资料收集完成再到开始备考，这个过程持续了两个月。在九月份中旬，我成功报名了下半年十一月份的软考中级（软件设计师）考试。十月底，我报名了十二月中旬的英语六级，三战英语六级。目前为止，前两项已经拿到手，英语六级也应该势在必得，今年下半年宏观上的计划，完成了。</span></li><li><span>持续吸收项目经验：老生常谈了，不说我做过的项目了，简单列举下寒假的项目学习计划吧：做一个全新的微服务项目，把 RabbitMQ 搞完以后，快速开始新项目的学习，争取在假期的一个月里，做两个项目，之后再慢慢调整优化。</span></li><li><span>算法：下半年在算法上是有下过功夫的：算法通关村过了两遍，力扣 TOP 150 过了一半。还不够，如何才能保持算法题的手感和进度呢？我在去年十月底报名了今年三月份的 Java B组蓝桥杯算法竞赛，目前还没有开始着手准备。算法不应该是“今天希望能完成三道题”，而是“今天必须至少做十道题，这是硬性要求”。这两天还不想大规模做算法学习准备，简单地看看之前写过的算法题，为假期的算法练习做好计划。</span></li><li><span>个人博客优化：这个倒不是什么事。</span></li></ul><p><span>2024年，新的阶段开始了。</span></p><h2 id='写我自己的故事'><span>写我自己的故事</span></h2><blockquote><p><span>2024年1月5日</span></p></blockquote><p><span>本学期的期末考试基本结束了，这几天也没什么要紧的事情了，确实可以借此机会休息放松一下。</span></p><p><span>半个多月前，我着手编写《该死的万柏林区》，一篇简单的记述型文章，就像像讲一个简单的故事一般，把17号那晚经历过的烂事记录一下。我这两周都在忙着备考期末，即便抽出了一些时间来写，到现在也还没写完。为什么会这样呢？因为我在写的过程中希望把故事讲的更加有代入感、更加生动，表达出当时的感受。所以这篇记录的后半段已经不仅局限于简单的陈述了，而是夹杂着心理描写、环境描写等，越发复杂了。</span></p><p><span>在整个编写期间，我的感觉非常良好，发现我还挺有写作天赋的。这个写作天赋并不是说我笔下的的辞藻有多么华丽，而是我有很强烈的表达欲望。我希望能写一些东西，我也确实写出来了一些东西，这让我感到兴奋。</span></p><p><span>今天下午听了会儿音乐，突然想到我为什么不写一写自己的故事呢？以前没资源没时间，不知道从哪里下手，从何处开始。但是现在不一样了，我有条件，我也有想法，我希望能写一部属于自己的纪传体文章。从今天开始，用文字记录我的生活，用我的一生去记录。</span></p><p><strong><span>这篇文章的标题暂定为：《岁月如歌：我的人生回忆录》</span></strong></p><h2 id='预判一手'><span>预判一手</span></h2><blockquote><p><span>2024年1月7日</span></p></blockquote><p><span>简历就是求职敲门砖，我还需要对应</span><code>专业技能</code><span>中的每一条，总结下需要学习了解的知识：</span></p><h3 id='专业技能'><span>专业技能</span></h3><p><span>你可以在简历中这样描述：</span></p><ol start='' ><li><strong><span>Spring Boot 启动流程</span></strong><span>：我熟悉 Spring Boot 的启动流程，包括加载配置文件、初始化应用上下文、注册Bean等。我了解如何在 Spring Boot 中自定义启动流程，以及如何使用 Spring Boot 的特性来简化应用的开发和部署。</span></li><li><strong><span>Bean 的生命周期</span></strong><span>：我熟悉 Spring 中 Bean 的生命周期，包括 Bean 的实例化、属性赋值、依赖注入、初始化以及销毁等过程。我了解如何使用 Bean 的生命周期来管理应用的状态，以及如何使用 Spring 的回调方法来自定义 Bean 的行为。</span></li><li><strong><span>IOC（控制反转）</span></strong><span>：我了解 IOC 原理，以及如何在 Spring 中使用 IOC 来实现依赖注入和管理对象。我明白 IOC 容器在 Bean 生命周期中的角色，以及如何利用 IOC 来提高代码的可测试性和可维护性。</span></li><li><strong><span>AOP（面向切面编程）</span></strong><span>：我熟悉 AOP 的基本概念，包括切面、通知、连接点等。我了解如何在 Spring 中使用 AOP 来实现跨切面的编程，例如日志记录、事务管理等。我明白 AOP 在提高代码复用性和解耦方面的优势。</span></li></ol><p><span>使用Hutool的HttpRequest来请求外部网站的热榜博文列表。通过Jackson的ObjectMapper工具，准确解析json数据并提取文章id。</span></p><p><span>根据热榜博文 id，使用 jsoup 实时请求搜索接口获取文章，并使用 CSS Selector 语法解析和预处理 HTML 文档，入库文章内容。</span></p><p><span>Java 基础：反射、异常处理、内部类、泛型</span></p><p><a target="_blank" rel="noopener" href='https://juejin.cn/post/7251786209340407868?searchId=20231227101202F1FEFD74FDD9AB3A4BC2#heading-15'><span>一文搞懂 ThreadLocal，是时候反问面试官了 - 掘金 (juejin.cn)</span></a></p><p><span>Java 并发编程：数据共享、ThreadLocal</span></p><p><span>我精通 Git 版本控制工具，能够在 IDEA、WebStorm 和 VS Code 等集成开发环境（IDE）中高效工作。同时，我也熟练使用 ChatGPT 进行自然语言处理，Swagger 进行 API 文档生成，SQLyog 进行 MySQL 数据库管理，Jmeter 进行性能测试，Typora 进行 Markdown 文档编写，以及 VMware 虚拟机进行虚拟化操作。除此之外，我掌握了 C++ 和 Python 的基础语法，能够编写简单的程序。这些技能不仅提高了我的工作效率，还增强了团队协作能力。</span></p><h3 id='项目经验'><span>项目经验</span></h3><p><span>网络传输安全</span></p><h3 id='防止窃听机密性'><span>防止窃听，机密性</span></h3><ul><li><span>对称加密算法：通信双方使用唯一的密钥来加密通信数据。</span></li></ul><blockquote><p><span>问题：通信之前，如何把用来加密数据的密钥安全地传输给对方？无法保证。</span></p></blockquote><ul><li><span>非对称加密算法：通信双方各持有一个密钥对，公钥是公开的，私钥自己持有。使用对方的公钥加密数据，只有对方才能用私钥解密</span></li></ul><blockquote><p><span>问题：非对称算法的运算速度很慢、性能很差，如果传输过程中频繁使用非对称加密算法加密数据，网络的传输效率是很低的</span></p></blockquote><ul><li><span>混合加密：将对称加密算法和非对称加密算法结合，通信开始前使用双方使用非对称加密方式传输密钥，保证了密钥的安全传输，此后通信双方可以使用该密钥来加密通信数据，保证了通信数据的保密性。</span></li></ul><h3 id='防止篡改完整性'><span>防止篡改，完整性</span></h3><ul><li><span>摘要算法：一种特殊的单向加密的压缩算法，它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串，就好像是给这段数据生成了一个数字“指纹”。摘要和原数据是完全等价的，加密后的数据无法解密，不能从摘要逆推出原文。发送方把加密后的数据，使用摘要算法生成摘要，把加密数据和该摘要一同发往接收方。接收方使用同样的摘要算法对加密数据进行计算，比照生成的摘要和接受的摘要是否一致，保证了通信数据的完整性。</span></li></ul><h3 id='身份认证真实性'><span>身份认证，真实性</span></h3><ul><li><span>数字签名：发送方要保证通信数据是真实可信的，不是别人伪造的。使用自己的私钥对摘要加密，生成数字签名。数字签名和加密数据被一同发往接收方。接收方使用发送方的公钥解密，验证签名，拿到摘要，再比对原数据验证完整性。这样就可以像签署文件一样，证明消息确实是发送方发的。</span></li><li><span>数字证书：接收方能够使用公钥验签，但是公钥是公开的。我们还缺少防止黑客伪造公钥的手段，也就是说，怎么来判断这个公钥就是发送方的公钥呢？CA（证书认证机构）具有极高的可信度，由它来为各个公钥签名，这样的公钥就是可信的。CA 对公钥的签名认证也是有格式的，不是简单地把公钥绑定在持有者身份上就完事了，还要包含序列号、用途、颁发者、有效时间等等，把这些打成一个包再签名，完整地证明公钥关联的各种信息，形成数字证书。</span></li><li><span>通信双方的数据是加密传输的，保证了数据是保密的，没有被窃听；使用摘要保证了数据的完整性，没有被篡改；使用数字签名，保证了发送方的身份是可靠的，没有被伪造；使用数字证书，保证了接收方的身份是可信的。</span></li></ul><h2 id='最大的幸福'><span>最大的幸福</span></h2><blockquote><p><span>2024年1月10日</span></p></blockquote><p><span>	</span><span>我们经常会跟父母发生口角，这是每个家庭中无法避免的。爹妈会觉得你太年轻、你的想法过于浮躁，总会说“你也老大不小了，该找个姑娘娶回家了”等类似的话。似乎只要年轻人们到了这个年纪，到了谈婚论嫁的年纪，全中国的爹妈都会开始在你耳边唠叨个没完。为什么会这样呢？他们的思想很简单，成家是最重要的。自家孩子能找到合得来的另一半，结婚生子，踏踏实实过日子就是最大的幸福。这是因为他们太在乎你，在乎你的将来，却又经常不会表达，说话很直。你当然能明白他们在乎你，却不太能接受他们灌输的思想。你有你自己的想法，不想被任何规划甚至操控你的生活。所以年轻人们总是跟爹妈吵架，不是为了柴米油盐，绝大多数是跟谈婚论嫁有关。</span></p><p><span>	</span><span>这样的吵架是应该的，是很正常的，绝不应该为此感到苦恼。回到家能吃上爹妈做的美味的饭菜，听着他们的唠叨，这其实是人生最幸福的事情。</span></p><p><span>	</span><span>生活总是充满了意外，正如那句话所说：你永远不会知道明天和意外哪个先到来，仅去年我就听说了很多事情。有同学的父亲突然间就患病去世，有刚高考完的同学在马路中央被极速的车辆撞死，有患绝症却无可奈何的夫妻二人……太多太多令人感到遗憾的事了。</span></p><p><span>	</span><span>再过五十年，当爹妈都不在人世的时候，你会开始怀念年轻时父母的管教；再过八十年，再你临终之际，你会不会回想起年轻时那些珍贵的回忆？</span></p><p><span>	</span><span>这个世界上唯一在乎你的只有你的父母，没有别人。他们总会把自己的孩子牵肠挂肚在心头，他们在闲暇时刻，总会想起自己的孩子。你以为世界上最关心你的是你的亲人吗？不，只有你的父母，连兄弟姐妹都不算。当然，兄弟姐妹之间的情感一定也是坚不可摧、牢不可破的，我绝不会否认这种相互支持的情谊。但我一直认为，父母能给到你的关心，跟任何其他没人能给到你的关心是有本质上的区别的。在大多数时候，兄弟姐妹间的情感都是一种互相帮助、互相扶持的情感。大家本是同根生，体内流淌着的是一样的血脉，所以大家会互相扶持，因为我们是亲兄弟、亲姐妹。</span></p><p><span>	</span><span>在我们小的时候，父母会管教我们的一切，他们教你学走路，在你牙牙学语时教你如何用筷子吃饭，在你上学时候，告诫你要好好学习，不要顽皮大脑，不要顶撞老师，要做一个乖孩子。在你放学后，他们总能提前备好一桌丰盛的饭菜，等你回家。在你走出村口，去到外地上学时，他们也会不辞万里，每隔一段时间就坐好几趟车，去到学校带给你最喜欢吃的东西。每逢过节，他们会去集市里买糖果、买玩具、买过节相关的东西。在我过去二十多年的生活中，似乎总是父母在操办一切，不论是家里的装修、我的学籍转让处理、办理我的一代身份证，还是老师要求家长给每个人买统一的制服。我们从来都是依靠父母，自己却没有意识到这一点。终于，我们现在长大了，就跟小时候希望的那样，我们终于长大了。长大并不是一瞬间的事，而是在生活中，慢慢发现自己能够独当一面了，是家里的顶梁柱了。很多东西我们可以自己决断，很多事情问父母的话，他们也不知道。这个阶段我们会感觉到原来父母不是全知啊，他们有好多不懂得东西。你会开始更加在意你的想法，你觉得我是年轻人，我的想法更加有活力。相反，你开始认为父母的想法陈旧又老土，你根本不屑于询问他们的意见，甚至不屑于跟他们讲话。他们太无知了，从小我们一家人就生活在山沟沟里，在这里我学会了走路，父母就是在这里慢慢把我们抚养成人的。到后来啊，我去到镇上、去到县城里上中学。这里是寄宿制学校，离家远了，不能每天都回家了。上初中那会儿，家里离学校还比较近，爸爸开摩托载着我们兄弟俩去上学。上了高中，从镇上出发，得倒两趟公交才能去到学校。这会儿爸爸只能载着我们到镇上，然后我们自个儿坐班车公交去学校。到了这个时候，凭借着在学校学到的那点知识，看到的物和景，越来越觉得自己的爸妈的想法好陈旧。我开始忽视他们的想法，自以为是，简单点说就是开始“装”了。</span></p><h2 id='暑期实习备战阶段'><span>暑期实习备战阶段</span></h2><blockquote><p><span>2024年1月31日</span></p></blockquote><p><span>正如标题所讲，目前已经进入暑期实习备战阶段：</span></p><h3 id='算法突击'><span>算法突击</span></h3><h3 id='八股记忆'><span>八股记忆</span></h3><h3 id='项目优化'><span>项目优化</span></h3><h2 id='memorycode-忆墨轩'><span>MemoryCode 忆墨轩</span></h2><p><span>	</span><span>我为什么要学编程？自学编程两年多，我都学到了些什么？</span></p><p><span>	</span><span>其实我是很不擅长总结这些东西的，写东西总是让我感觉很烦躁。这其中的原因有很多，就外部原因来讲：当今社会，是一个数字化信息化的社会。换句话讲，这是一个浮躁的社会。</span></p><p><span>	</span><span>科技发展日新月异，手机电脑等电子产品作为办公社交的设备已经离不开身。就我个人来讲，每天都需要在这些电子设备上获取信息，比如，关注热点新闻、学习前沿科技技术、刷刷短视频或者看一部自己喜欢的电影。我特别喜欢这句话：这个世界上，对每一个人来讲，只有一件事是绝对公平的，那就是每个人每天都只有24小时。想想看，自己每天是如何支配这24小时的。我经常进行这样的思考，能让我富有活力。进行这样的思考给我带来一种很特别的感觉，那就是我总能想明白自己正在做什么，或者需要做什么，我很喜欢这种感觉。这就是在这个浮躁的社会中，我在做的事情：一天24小时中，总要抽出一部分时间，这是属于我自己的时间，思考自己现在所处的人生阶段和对未来的规划，想清楚自己应该做什么，并矢志不渝地执行它。</span></p><p><span>	</span><span>光在大脑里空洞洞地思考是不够的，在适当的场合下，我会选择用文字记录下我的思维过程。就像前面谈到的，写东西总是让我感觉一股莫名的烦躁，因为绝大多数时间中，我总是不能够恰当地记录下我的想法和思维过程。那么废话不多说，进入今天的闲聊时间吧。</span></p><p><span>	</span><span>现在是二月一日，明年六月底就要本科毕业，我已经进入暑期实习备战阶段。我对自己的定位很清楚，也在认真准备着。对于 Java 实习面试，我没有相关经验，但是我有很多想法。在面试中如何回答的滴水不漏？面试无非三方面：八股吟唱，项目拷问，算法考察。</span></p><p><span>	</span><span>算法没什么好讲的，刷题 + 总结即可，重要的是制定长时间的规划并不折不扣地执行，稳步提升算法水平。这段时间，我也在着手总结常见算法考察题型的解题思路</span></p><p><span>	</span><span>八股文很关键，也很无聊，属于是面试中考察的重点。这部分内容必须要充分地准备，也就是熟练背诵常见的八股面试题并理解，才能做到在面试过程中回答地滴水不漏。</span></p><p><span>	</span><span>我正在着手写一个系列，那就是避开细节知识不谈，讲一讲自己对某方面知识的理解。目前想到的有这些：</span></p><ul><li><span>为什么要学编程？可以谈一谈编程学习的经验吗</span></li><li><span>能谈一谈什么是 Spring 吗？</span></li><li><span>能谈一谈什么是 Maven 吗？</span></li><li><span>能谈一谈 MySQL 吗？</span></li><li><span>能谈一谈 Redis 吗？</span></li><li><span>讲一讲你做的这个项目吧，这个系统是用来干什么的，你又是怎么设计的，开发过程中遇到了什么困难，你又是如何解决的</span></li><li><span>一个 Java 程序的运行过程是怎样的？</span></li><li><span>一条 SQL 语句的执行过程是怎样的？</span></li><li><span>能谈一谈使用 TCP 通信的整个流程吗？</span></li></ul><p><span>	</span><span>像这样的问题有很多，你想想觉得挺简单，但一段话能说明白很难。我对自己的要求就是，用简短的几段文字，写清楚这些问题的答案。最近看过了很多 Java 八股面试题，那些扩展性思维的题目总能让我猝不及防，有感而发，写下了上面这段文字</span></p><p><span>	</span><span>我决心要搭建自己的面试网站了，</span><strong><span>MemoryCode 忆墨轩</span></strong><span> 应用而生</span></p><h2 id='memory-项目全家桶系列'><span>Memory 项目全家桶系列</span></h2><blockquote><p><span>2024年2月7日</span></p></blockquote><p><span>MemoryCode 忆墨轩，MemorySearch 忆搜阁，MemoryCal 忆算云，MemoryAPI 忆汇廊，MemoryTools 忆工坊</span></p><p><span>在昨晚，完成了 Memory 项目全家桶系列初步构想，搞个噱头，简单纪念一下 ☕</span></p><h2 id='简历优化'><span>简历优化</span></h2><blockquote><p><span>2024年2月20日</span></p></blockquote><p><span>很久没有花费时间写点东西了，一整个寒假浑浑噩噩，玩得倒挺开心，学习进度也在稳步推进，一点没有落下，想想还是蛮不错的。</span></p><p><span>花了一个多小时优化简历专业技能，目标清晰了许多，果然简历才是门面，是推销自己的资本。</span></p><p><span>早在一个多月前的预判一手栏目中，我就已经意识到简历优化的重要性了，但是假期里主要在学习优化 MemorySearch 忆搜阁项目，算法和八股也拖拉了一些，简历优化更是不了了之。</span></p><p><span>今下午完成项目首页，明天完成第一个项目的简历排版，简历上写不下的东西都放在文档中具体描述了，这样即巩固了我对该项目的全面认知，又增加了该项目的真实感，一举多得。</span></p><p><span>这就是今天的感悟了</span></p><h2 id='项目扩展思考'><span>项目扩展思考</span></h2><blockquote><p><span>2024年2月20日</span></p></blockquote><p><span>正如标题所说，这个栏目就暂时放置一些我在逐步完善 MemorySearch 忆搜阁 项目过程中的扩展思考，为后续的学习提供思路：</span></p><h3 id='es-删除策略'><span>ES 删除策略</span></h3><p><span>Elasticseach 数据存储在硬盘内，如何选择合适的删除策略，清理过期数据呢</span></p><p><span>Elasticsearch一个索引内可以存放的数据条数并没有固定的上限，它主要取决于以下几个因素：</span></p><ol start='' ><li><strong><span>磁盘空间</span></strong><span>：索引的大小受限于可用磁盘空间。Elasticsearch会将索引数据存储在磁盘上，因此磁盘空间是限制索引大小的主要因素。</span></li><li><strong><span>分片配置</span></strong><span>：Elasticsearch通过分片（shards）来水平扩展数据，每个索引可以包含一个或多个分片。默认情况下，一个索引会有5个主分片（primary shards），但可以在创建索引时指定不同的分片数。分片数越多，索引可以容纳的数据量就越大，但同时也会增加集群的管理复杂性。</span></li><li><strong><span>文档大小</span></strong><span>：单个文档的大小也会影响索引的容量。虽然Elasticsearch支持非常大的文档，但过大的文档可能会降低写入性能并增加索引的存储需求。</span></li></ol><p><span>当索引达到其存储限制时，Elasticsearch不会直接拒绝新的数据写入。相反，它会根据配置的策略来处理这种情况。常见的删除策略包括：</span></p><ol start='' ><li><strong><span>基于时间的删除</span></strong><span>：使用索引生命周期管理（ILM）策略，根据时间戳字段自动删除旧数据。例如，可以设置一个策略，使得索引在创建后的一定时间后被删除。</span></li><li><strong><span>基于大小的删除</span></strong><span>：当索引达到一定的大小时，可以配置ILM策略来删除旧数据，或者通过手动干预来删除不需要的数据。</span></li><li><strong><span>基于文档数量的删除</span></strong><span>：虽然Elasticsearch不直接基于文档数量限制索引大小，但可以通过删除旧文档来管理索引的大小。这可以通过编写删除查询或使用ILM策略来实现。</span></li><li><strong><span>滚动索引</span></strong><span>：在某些场景中，可以使用滚动索引（rolling indices）模式，即定期创建新的索引来存储新数据，而旧索引可以被删除或归档。这种策略常见于日志收集和分析场景。</span></li></ol><p><span>在实际应用中，建议根据业务需求和数据特点来选择合适的删除策略。同时，监控Elasticsearch集群的健康状况和性能，确保数据的有效管理和系统的稳定运行。</span></p><p><span>Elasticsearch 默认不提供自动删除旧数据的策略。默认情况下，索引会一直存在，直到你手动删除它们或者磁盘空间耗尽。但是，Elasticsearch 提供了索引生命周期管理（ILM）功能，允许你定义自己的删除策略。</span></p><p><span>当你创建一个索引时，除非你明确指定了ILM策略，否则该索引不会受到任何自动删除策略的影响。这意味着你需要主动管理索引的生命周期，包括决定何时删除不再需要的索引。</span></p><p><span>在ILM中，你可以定义策略来根据索引的年龄、大小或其他条件自动将索引移动到只读状态，并最终删除它们。但是，如果你不配置ILM或使用默认的ILM策略，索引将不会自动被删除。</span></p><p><span>因此，为了有效地管理Elasticsearch中的索引和数据，建议配置适当的ILM策略，以确保旧数据在不再需要时被自动删除，从而释放磁盘空间并优化集群性能。</span></p><h3 id='确保-es-文档的-id-唯一性'><span>确保 ES 文档的 id 唯一性</span></h3><p><span>如何确保 Elasticsearch 文档的 id 唯一性？</span></p><p><span>在Elasticsearch中记录搜索词，每条搜索词作为一个文档，保证数据ID的唯一性是非常重要的。Elasticsearch使用文档ID来唯一标识每个文档，因此你需要确保每个搜索词都被分配一个唯一的ID。以下是一些方法来实现这一点：</span></p><ol start='' ><li><p><strong><span>使用UUID</span></strong><span>：</span>
<span>UUID（Universally Unique Identifier）是一种广泛使用的唯一标识符生成方法。你可以为每个搜索词生成一个UUID，并将其用作文档的ID。UUID具有全局唯一性，可以确保即使在不同的系统或时间点上生成的ID也不会冲突。</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="java"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">import</span> <span class="cm-variable">java</span>.<span class="cm-variable">util</span>.<span class="cm-variable">UUID</span>; &nbsp;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> </span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">uniqueId</span> <span class="cm-operator">=</span> <span class="cm-variable">UUID</span>.<span class="cm-variable">randomUUID</span>().<span class="cm-variable">toString</span>(); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// 使用uniqueId作为文档的ID</span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 104px;"></div><div class="CodeMirror-gutters" style="display: none; height: 104px;"></div></div></div></pre></li><li><p><strong><span>基于时间戳和搜索词生成ID</span></strong><span>：</span>
<span>如果你的搜索词量不是特别大，并且你希望ID具有一定的可读性或者顺序性，你可以考虑使用时间戳和搜索词来生成ID。例如，你可以将时间戳和搜索词拼接起来，并可能加上一个前缀或后缀来确保唯一性。</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="java"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">import</span> <span class="cm-variable">java</span>.<span class="cm-variable">time</span>.<span class="cm-variable">Instant</span>; &nbsp;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> </span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">timestamp</span> <span class="cm-operator">=</span> <span class="cm-variable">Instant</span>.<span class="cm-variable">now</span>().<span class="cm-variable">toString</span>().<span class="cm-variable">replace</span>(<span class="cm-string">"-"</span>, <span class="cm-string">""</span>); <span class="cm-comment">// 移除时间戳中的"-"字符 &nbsp;</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">searchTerm</span> <span class="cm-operator">=</span> <span class="cm-string">"你的搜索词"</span>; &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">uniqueId</span> <span class="cm-operator">=</span> <span class="cm-string">"search-"</span> <span class="cm-operator">+</span> <span class="cm-variable">timestamp</span> <span class="cm-operator">+</span> <span class="cm-string">"-"</span> <span class="cm-operator">+</span> <span class="cm-variable">searchTerm</span>; &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// 使用uniqueId作为文档的ID</span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 156px;"></div><div class="CodeMirror-gutters" style="display: none; height: 156px;"></div></div></div></pre></li><li><p><strong><span>使用自增ID</span></strong><span>：</span>
<span>如果你的搜索词量不是很大，并且你不需要跨多个节点或集群保证唯一性，你可以考虑使用自增的ID。但是，请注意，如果你有多个节点或者需要扩展集群，自增ID可能会导致ID冲突。</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="java"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">AtomicInteger</span> <span class="cm-variable">counter</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable">AtomicInteger</span>(<span class="cm-number">0</span>); &nbsp;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">uniqueId</span> <span class="cm-operator">=</span> <span class="cm-string">"search-"</span> <span class="cm-operator">+</span> <span class="cm-variable">counter</span>.<span class="cm-variable">getAndIncrement</span>(); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">// 使用uniqueId作为文档的ID</span></span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 78px;"></div><div class="CodeMirror-gutters" style="display: none; height: 78px;"></div></div></div></pre></li><li><p><strong><span>使用哈希函数</span></strong><span>：</span>
<span>如果你希望ID更短，你可以考虑使用哈希函数（如MD5或SHA-1）对搜索词进行哈希处理，并将结果作为文档的ID。但请注意，哈希函数可能会产生相同的输出（即哈希碰撞），尽管这种可能性非常低。</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="java"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">import</span> <span class="cm-variable">java</span>.<span class="cm-variable">security</span>.<span class="cm-variable">MessageDigest</span>; &nbsp;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">import</span> <span class="cm-variable">java</span>.<span class="cm-variable">security</span>.<span class="cm-variable">NoSuchAlgorithmException</span>; &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> </span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">String</span> <span class="cm-variable">searchTerm</span> <span class="cm-operator">=</span> <span class="cm-string">"你的搜索词"</span>; &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">try</span> { &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable">MessageDigest</span> <span class="cm-variable">md</span> <span class="cm-operator">=</span> <span class="cm-variable">MessageDigest</span>.<span class="cm-variable">getInstance</span>(<span class="cm-string">"MD5"</span>); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable-3">byte</span>[] <span class="cm-variable">hashBytes</span> <span class="cm-operator">=</span> <span class="cm-variable">md</span>.<span class="cm-variable">digest</span>(<span class="cm-variable">searchTerm</span>.<span class="cm-variable">getBytes</span>()); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable-3">StringBuilder</span> <span class="cm-variable">hexString</span> <span class="cm-operator">=</span> <span class="cm-keyword">new</span> <span class="cm-variable-3">StringBuilder</span>(); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">for</span> (<span class="cm-variable-3">byte</span> <span class="cm-variable">b</span> : <span class="cm-variable">hashBytes</span>) { &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">String</span> <span class="cm-variable">hex</span> <span class="cm-operator">=</span> <span class="cm-variable-3">Integer</span>.<span class="cm-variable">toHexString</span>(<span class="cm-number">0xff</span> <span class="cm-operator">&amp;</span> <span class="cm-variable">b</span>); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">if</span> (<span class="cm-variable">hex</span>.<span class="cm-variable">length</span>() <span class="cm-operator">==</span> <span class="cm-number">1</span>) <span class="cm-variable">hexString</span>.<span class="cm-variable">append</span>(<span class="cm-string">'0'</span>); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">hexString</span>.<span class="cm-variable">append</span>(<span class="cm-variable">hex</span>); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;  } &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable-3">String</span> <span class="cm-variable">uniqueId</span> <span class="cm-operator">=</span> <span class="cm-variable">hexString</span>.<span class="cm-variable">toString</span>(); &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">// 使用uniqueId作为文档的ID &nbsp;</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">} <span class="cm-keyword">catch</span> (<span class="cm-variable">NoSuchAlgorithmException</span> <span class="cm-variable">e</span>) { &nbsp;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">// 处理异常 &nbsp;</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 468px;"></div><div class="CodeMirror-gutters" style="display: none; height: 468px;"></div></div></div></pre></li></ol><p><span>无论你选择哪种方法，都需要确保生成的ID在整个Elasticsearch集群中是唯一的。如果你使用了多节点集群，并且需要在不同节点之间保证ID的唯一性，那么使用UUID或基于时间戳和搜索词的方法通常是更好的选择。</span></p><h3 id='异步编程为什么更快'><span>异步编程为什么更快</span></h3><p><span>异步编程更快的原因主要有以下几点：</span></p><ol start='' ><li><span>非阻塞性：异步编程允许程序在等待某个操作完成时继续执行其他任务，而不是阻塞在那里等待。这样可以避免因等待某个耗时操作而导致整个程序的阻塞，提高了程序的执行效率。</span></li><li><span>并行处理：异步编程可以充分利用多核处理器的优势，将多个任务分配给不同的处理器核心同时执行，从而提高程序的执行速度。</span></li><li><span>减少资源占用：异步编程可以减少程序在等待I/O操作（如网络请求、文件读写等）完成时的资源占用，例如内存和CPU。这样可以让程序在等待这些操作时执行其他任务，提高资源利用率。</span></li><li><span>简化代码逻辑：异步编程可以将复杂的同步代码逻辑转换为更简单、易于理解的异步代码，降低了代码的复杂度和维护成本。</span></li></ol><p><span>总之，异步编程通过提高程序的执行效率、充分利用多核处理器和减少资源占用等方面的优势，使得程序在处理耗时操作时能够更快地完成任务。</span></p><h3 id='系统性能优化'><span>系统性能优化</span></h3><p><span>当然，除了异步编程优化数据插入性能外，还可以考虑以下几种技术上的优化策略来进一步提升系统性能：</span></p><ol start='' ><li><p><span>内存缓存</span></p><ul><li><strong><span>使用缓存库</span></strong><span>：如Redis或Memcached，将频繁访问的数据（如热门作者或诗词）缓存在内存中，减少对数据库的访问次数。</span></li><li><strong><span>本地缓存</span></strong><span>：对于单个应用实例，可以使用如Google的Guava Cache或EhCache等本地缓存库，缓存部分数据以减少数据库访问。</span></li></ul></li><li><p><span>数据库优化</span></p><ul><li><strong><span>索引优化</span></strong><span>：确保数据库表的关键字段（如作者、标题等）有适当的索引，以加速查询速度。</span></li><li><strong><span>批量操作</span></strong><span>：继续利用批量插入操作来减少数据库交互次数，提高数据写入效率。</span></li><li><strong><span>数据库连接池</span></strong><span>：使用连接池来管理数据库连接，避免频繁地创建和销毁连接，减少资源消耗。</span></li></ul></li><li><p><span>HTTP请求优化</span></p><ul><li><strong><span>请求合并</span></strong><span>：对于多个小的HTTP请求，可以考虑合并成一个大的请求，以减少网络延迟和服务器处理时间。</span></li><li><strong><span>请求缓存</span></strong><span>：对于不经常变动的数据，可以在客户端或代理服务器上缓存HTTP响应，避免重复请求。</span></li></ul></li><li><p><span>并发控制</span></p><ul><li><strong><span>限流与降级</span></strong><span>：在并发量过高时，通过限流策略保护核心资源，同时可以采用降级策略，暂时关闭部分功能以保证整体系统的稳定性。</span></li></ul></li><li><p><span>解析优化</span></p><ul><li><strong><span>流式解析</span></strong><span>：使用如Jsoup的流式解析功能，避免一次性加载整个HTML文档到内存中，减少内存消耗。</span></li></ul></li><li><p><span>日志与监控</span></p><ul><li><strong><span>性能监控</span></strong><span>：通过日志记录和性能监控工具（如Prometheus, Grafana等）持续跟踪系统性能，发现瓶颈并进行针对性优化。</span></li></ul></li><li><p><span>系统架构优化</span></p><ul><li><strong><span>微服务化</span></strong><span>：将系统拆分为多个微服务，每个服务负责处理特定的功能，以提高系统的可扩展性和可维护性。</span></li><li><strong><span>负载均衡</span></strong><span>：使用负载均衡器分发请求到多个应用实例，避免单点故障，提高系统可用性。</span></li></ul></li><li><p><span>代码层面优化</span></p><ul><li><strong><span>避免N+1查询问题</span></strong><span>：在数据访问层优化查询逻辑，避免因为不恰当的查询策略导致的过多数据库访问。</span></li><li><strong><span>使用合适的数据结构和算法</span></strong><span>：确保代码中使用高效的数据结构和算法，减少不必要的计算和资源消耗。</span></li></ul></li></ol><p><span>综上所述，通过结合多种优化策略，可以进一步提升系统的整体性能和响应速度。</span></p><h3 id='单体架构升级到分布式架构'><span>单体架构升级到分布式架构</span></h3><p><span>从单体架构升级到分布式架构，需要注意以下几个方面：</span></p><ol start='' ><li><strong><span>系统拆分</span></strong><span>：需要对原有的单体系统进行合理的拆分，将其分解为多个可以独立部署和运行的子系统或服务。这一过程中要考虑服务的边界划分，确保每个服务的职责单一，便于管理和维护。</span></li><li><strong><span>数据一致性</span></strong><span>：在分布式系统中，数据可能会分布在不同的服务或数据库中，因此需要确保数据的一致性。这可能涉及到分布式事务的处理，以及选择合适的一致性模型（如强一致性、最终一致性等）。</span></li><li><strong><span>通信机制</span></strong><span>：服务之间需要进行通信，需要选择合适的通信机制，如同步调用、异步消息队列等。同时，要考虑到网络延迟、服务可用性等因素，设计容错和重试机制。</span></li><li><strong><span>服务发现与注册</span></strong><span>：在分布式环境中，服务的位置可能会动态变化，需要实现服务发现和注册机制，以便服务之间能够相互找到并通信。</span></li><li><strong><span>负载均衡</span></strong><span>：为了提高系统的伸缩性和可用性，需要实现负载均衡机制，使得请求能够均匀地分发到不同的服务实例上。</span></li><li><strong><span>监控与日志</span></strong><span>：分布式系统的监控和日志记录比单体系统更加复杂。需要有一套完善的监控体系来跟踪系统的性能和健康状况，同时要有集中的日志管理系统，以便于问题的定位和分析。</span></li><li><strong><span>安全性</span></strong><span>：分布式系统的安全性也是一个重要考虑点。需要确保各个服务之间的通信是安全的，同时还要考虑到服务对外的API安全，防止未授权的访问。</span></li><li><strong><span>部署与运维</span></strong><span>：分布式系统的部署和运维比单体系统更加复杂。需要考虑如何快速部署新版本的服务，以及如何处理服务间的依赖关系。</span></li><li><strong><span>容灾备份</span></strong><span>：为了保证系统的高可用性，需要设计容灾备份方案，包括数据备份、服务冗余等，确保在出现故障时能够快速恢复。</span></li><li><strong><span>业务改造</span></strong><span>：从单体架构向分布式架构迁移时，可能需要对现有业务逻辑进行改造，以适应新的架构模式。这可能涉及到代码重构和业务流程的调整。</span></li><li><strong><span>组织文化</span></strong><span>：分布式架构的引入不仅仅是技术层面的改变，还可能影响到团队的组织文化和工作方式。团队成员需要适应新的开发、部署和运维流程。</span></li><li><strong><span>技术选型</span></strong><span>：在选择分布式架构的具体实现技术时，需要考虑技术的成熟度、社区支持、学习曲线等因素，选择适合自己团队和业务需求的技术栈。</span></li><li><strong><span>渐进式迁移</span></strong><span>：如果条件允许，可以考虑采用渐进式迁移的策略，逐步将单体架构中的模块转化为分布式服务，而不是一次性全面转型，这样可以减少风险和压力。</span></li></ol><p><span>总的来说，从单体架构升级到分布式架构是一个复杂的过程，涉及到系统架构、技术选型、团队协作等多个方面。需要仔细规划和逐步实施，以确保迁移过程的平稳和系统的稳定运行。</span></p><h3 id='completablefuture-异步编程'><span>CompletableFuture 异步编程</span></h3><p><code>CompletableFuture</code><span> 是 Java 8 引入的一个功能强大的类，用于异步编程和函数式编程。它提供了一种简单而灵活的方式来处理并发编程中的异步操作和结果。介绍 </span><code>CompletableFuture</code><span> 时，可以从以下几个方面入手：</span></p><ol start='' ><li><p><strong><span>基础概念</span></strong><span>:</span></p><ul><li><span>解释什么是异步编程，为什么在现代应用中需要它。</span></li><li><span>引入 </span><code>CompletableFuture</code><span> 的概念，并解释其与传统的 </span><code>Future</code><span> 和 </span><code>Callable</code><span> 的区别。</span></li></ul></li><li><p><strong><span>创建 CompletableFuture</span></strong><span>:</span></p><ul><li><span>展示如何使用 </span><code>CompletableFuture.supplyAsync</code><span> 和 </span><code>CompletableFuture.runAsync</code><span> 创建异步任务。</span></li><li><span>解释这两种方法的参数，如 </span><code>Supplier</code><span> 和 </span><code>Runnable</code><span>，并讨论它们的用途。</span></li></ul></li><li><p><strong><span>链式编程</span></strong><span>:</span></p><ul><li><span>展示如何使用 </span><code>thenApply</code><span>, </span><code>thenAccept</code><span>, </span><code>thenCompose</code><span> 等方法链接多个异步操作。</span></li><li><span>解释这些方法的返回值类型和作用。</span></li></ul></li><li><p><strong><span>异常处理</span></strong><span>:</span></p><ul><li><span>讨论如何处理 </span><code>CompletableFuture</code><span> 中的异常。</span></li><li><span>展示如何使用 </span><code>exceptionally</code><span> 方法处理异常。</span></li></ul></li><li><p><strong><span>组合和合并操作</span></strong><span>:</span></p><ul><li><span>介绍 </span><code>allOf</code><span>, </span><code>anyOf</code><span> 和 </span><code>completedFuture</code><span> 等方法，用于组合和等待多个 </span><code>CompletableFuture</code><span> 实例。</span></li><li><span>讨论这些方法的使用场景。</span></li></ul></li><li><p><strong><span>等待结果</span></strong><span>:</span></p><ul><li><span>展示如何使用 </span><code>get</code><span> 和 </span><code>join</code><span> 方法等待异步操作的结果。</span></li><li><span>讨论这两种方法的区别和适用场景。</span></li></ul></li><li><p><strong><span>取消操作</span></strong><span>:</span></p><ul><li><span>解释如何使用 </span><code>cancel</code><span> 方法取消一个异步操作。</span></li><li><span>讨论取消操作的限制和可能的后果。</span></li></ul></li><li><p><strong><span>与其他并发工具的比较</span></strong><span>:</span></p><ul><li><span>比较 </span><code>CompletableFuture</code><span> 与其他并发工具（如 </span><code>Future</code><span>, </span><code>ExecutorService</code><span>, </span><code>RxJava</code><span> 等）的优缺点。</span></li></ul></li><li><p><strong><span>最佳实践和注意事项</span></strong><span>:</span></p><ul><li><span>强调避免阻塞等待异步结果的重要性。</span></li><li><span>讨论如何避免创建过多的线程，以及如何优雅地处理异常和取消操作。</span></li></ul></li><li><p><strong><span>实际案例</span></strong><span>:</span></p><ul><li><span>提供一个或多个实际使用 </span><code>CompletableFuture</code><span> 的案例，以展示其在实际项目中的应用。</span></li></ul></li></ol><p><span>最后，确保在介绍过程中结合示例代码，以便读者更好地理解和实践所学内容。</span></p><p><span>API 项目 思考：</span></p><p><span>设计更多优秀的接口，比如根据用户需求和提交的数据，调用 AI 大模型接口，在线生成图表。对于这种响应时间较长的服务，可以考虑使用异步编程，或者引入消息队列来提高系统响应速度，有效提升系统性能</span></p><p><span>客户端 SDK 的设计要保持精简，遵循相关规范，保证用户通过 SDK 调用接口服务的简洁性，提升用户体验</span></p><p><span>切实保障接口调用的性能、稳定性和可用性，可以考虑在网关增加限流和降级保护，以及严格的权限校验机制。给每个用户分配一对密钥，作为调用接口服务的凭证；对每个用户的接口调用次数加以限制；推出充值系统和订单系统，用户可充值购买接口调用次数，以享受接口调用服务</span></p><p><span>作为一个接口开放平台，目前仅提供了通过客户端 SDK 调用接口服务，应该考虑到如何便捷地添加新的接口服务、如何提高其它开发者接入平台的效率、安全性等，真正地让平台成为开放平台</span></p><p><span>现在的 客户端 SDK 仅支持下载代码至本地，在本地使用 mvn install 命令打包 SDK，在本地项目中引入 SDK 依赖即可使用</span></p><p><span>考虑在微服务网关前搭建 Nginx 网关，通过负载均衡实现高并发</span></p><p><span>多阅读官网文档，Spring Cloud Gateway、Dubbo、Ant Design Pro</span></p><p><span>你的项目 QPS 是多少？</span></p><h2 id='去人间'><span>去人间</span></h2><blockquote><p><span>2024年2月20日</span></p></blockquote><p><strong><span>大三下还打算窝在学校上课，是等着毕业就失业吗？</span></strong></p><h2 id='副业经历'><span>副业经历</span></h2><blockquote><p><span>2024年2月22日</span></p></blockquote><p><span>昨天看到掘金一位大佬从业互联网行业十年的副业经历，有感而发，想写一写这个话题，还是有很多想表达的</span></p><h2 id='晚风几许撩人意夕阳半刻醉人心'><span>晚风几许撩人意，夕阳半刻醉人心</span></h2><blockquote><p><span>2024年2月23日</span></p></blockquote><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/sunset.png" referrerpolicy="no-referrer" alt="sunset"></p><h2 id='周日早安'><span>周日，早安</span></h2><blockquote><p><span>2024年2月24日</span></p></blockquote><p><span>	</span><span>感觉我每天过得还是很迷啊，稀里糊涂的。</span></p><p><span>	</span><span>昨晚在宿舍写日记，被刚自习回来的小成看到了，对我是赞不绝口。“为什么我到现在才发现你是这样的人啊，好遗憾这么晚才认识你”，他一晚上都在我耳边念叨这样的话。随即，我跟小成分享了我近一年来的文字记录，有编程学习之路上的细枝末节，有生活感悟，还有那些在闲暇时刻记录下的生活中的点点滴滴。他听了很感动，也是由衷地佩服我，嚷嚷着拍了好几张照片，分享给了他的两位好朋友。我打心底是很高兴的，这不仅仅是因为能结识这样一个好朋友而感到欣慰，或者是被别人夸奖而感到自豪。更多的缘由是小成对我的肯定，让我明白了我正在做的事，是能够给予我以及身边的朋友以正反馈的，这让我在内心深处感到了前所未有的释然。</span></p><p><span>	</span><span>我觉得每天过得很迷，是因为在考虑的事情太多。跟大多数人一样，我每天也在花时间思考，不过很显然，我思考的深度和广度都超越了同龄人，这一点我是自知的。有需要的时候，我会把我思考的成果写出来，用文字记录下来，这是我养成的一个好习惯。我的文笔很一般，记录的那些生活琐事，或者说是生活点滴，基本上都不会有相当华丽的辞藻。我是一名理科生，软件工程专业，现在的目标当然是希望在毕业之后，能够进入大厂深造。昨天刷视频时，看到这样一句饶有趣味的话：在这个浮躁的社会中，每个人的理想，或者说生活目标是全然不同的，一部分人执着于对亲情和爱情的守护，而另一部分人更加愿意投身于事业的发展和金钱的积累。但无论是为了哪种目标，都让他们收获了追求幸福的勇气。能够拥有这样信念的人，绝对是生活中的强者和智者。很显然不是所有人都有着明确的生活目标。那些没有对未来生活没有过憧憬的，就是没有对自己现阶段的定位进行过考量，没有对当下的生活进行过深刻的思考。对他们来讲，至少在现阶段，他们是浑浑噩噩且碌碌无为的。</span></p><p><span>	</span><span>又扯远了，让我们把话说回来吧。我的文字没有华丽的辞藻修饰，读起来也不会非常朗朗上口，那仅仅是属于我自己的生活记录罢了。但是这些记录是平实有力的，是我对当下人生独立思考之后的产物，是我我给自己留下的最宝贵的礼物。“当你努力之后，生活中的美好都会如约而至”，好像是有句话是这么讲的吧。我经常在微信公众号读文章，像《我的人渣生活》《每晚一卷书》《强势文化笔记》这些公众号，他们写的文章真的很受用。很多我的想法和疑问，都能在这些文章中找到答案，他们的文字总能引起我的情感共鸣。越努力，真的就越幸运。</span></p><p><span>	</span><span>“一个人的认知和他的年龄往往是不成正比的”，每个人觉醒的时间是不一样的。“你之所以对你身边的人感到烦躁不安，究其原因，是因为你甩他们还不够远”，是啊，以前看到这样的话：试想一下，你现在站在一楼的门前，看到的全是来来往往、行色匆匆的过路人。满大街车水马龙，小贩吆喝声、机车鸣笛声此起彼伏，令人烦躁。每个人脸上都挂着被岁月拍打的痕迹，连你自己也不例外。当你站在十楼的窗前，你能看到的，不过是街道上传来的几声若有若无的喇叭声。当你站在一百层楼的楼顶，此刻出现在你眼前的，只有广袤无垠的蓝天和熙熙攘攘的白云。深呼吸，闭眼，你的耳边不再有烦扰的声音，你感觉在阳光的沐浴之下，灵魂飞升，物我和一。此时此刻，这几缕阳光只属于你一个人。你会将尘世间的烦恼都抛在脑后，豁然开朗，眼前只是万籁俱寂，一片祥和。竭力向下望去，竟是漫山遍野尽收眼底，唐朝大诗人杜甫所言：“会当临绝顶，一览众山小”，居然也不过如此。</span></p><p><span>	</span><span>这个世界上，最公平的事莫过于：”上帝只给了每个人每天二十四小时“。那么应该拿这仅有的二十四小时做什么，只取决于你。</span></p><p><span>	</span><span>今天的早间分享就结束了，写给我自己，谢谢你的聆听。</span></p><p><span>	</span><span>周日，早安。</span></p><h2 id='强者不会抱怨环境'><span>强者不会抱怨环境</span></h2><blockquote><p><span>2024年2月25日</span></p></blockquote><p><span>强者，从来不会抱怨环境。我他妈就是强者。</span></p><h2 id='没有什么光阴真正被虚度'><span>没有什么光阴真正被虚度</span></h2><blockquote><p><span>2024年2月25日</span></p></blockquote><p><span>其实啊，人这一生，每段经历都是有意义的。</span></p><p><span>没有什么光阴真正被虚度，也没有任何事情是徒劳无功的。</span></p><p><span>那些看似无用的东西，都像埋藏在生命深处的种子，总会在某天结出沉甸甸的人生果实。</span></p><h2 id='越努力越幸运'><span>越努力，越幸运</span></h2><blockquote><p><span>2024年2月26日</span></p></blockquote><p><span>今晚在尝试基本完善简历：项目经历和个人优势。</span></p><p><span>辗转在 Gitee / Github 代码托管平台、项目开发者文档和个人博客之间，看到我去年十一月份留下的文字记录，突然间就鼻头一酸。</span></p><p><span>每天写写日记，记录学习生活本来是一件很简单的事，我也一直在坚持这样做。但看到我去年备战软考中级前后留下的文字，勾起了我三个月前的记忆。这记忆太清楚了，我能切实感觉到那平实的文字间，散发出的是莫大的勇气。</span></p><p><span>时间过得很快啊，不知不觉间，大三上学期就结束了，去年制定的“三步走”战略，到明天早上六点就能见分晓了。</span></p><p><span>这两天写的东西多了起来，大概是我抽出了更多独处的时间罢。现在晚上九点，正坐在校餐厅二层思考着。</span></p><p><span>就此，打住。</span></p><h2 id='我跟六级杠上了'><span>我跟六级杠上了</span></h2><blockquote><p><span>2024年2月27日</span></p></blockquote><p><span>奶奶的，“越努力，越幸运”，幸运个鸡毛，大早上查分，六级还是没过，直接把我干醒了。</span></p><p><span>这对我刺激还不小，去年的“三步走”战略终究未能实现，我又又又一次栽在英语六级上了。</span></p><p><span>罢了罢了，区区六级，何足挂齿，还是抓紧时间完善简历吧。</span></p><h2 id='知识改变年薪文化改变命运'><span>知识改变年薪，文化改变命运</span></h2><blockquote><p><span>2024年2月28日</span></p></blockquote><p><strong><span>因为人生原本灰暗，若抱怨，便是自熄炬火；</span></strong></p><p><strong><span>因为命运原本不公，若不读书，便是自甘平庸。</span></strong></p><p><span>这个世界上，永远存在一条不成文的规则，叫：知识改变年薪，文化改变命运。</span></p><h2 id='渡人更要渡己'><span>渡人，更要渡己</span></h2><blockquote><p><span>2024年2月29日</span></p></blockquote><p><span>我越来越发现，我并没有平衡好生活中的一切，无论友情、亲情，还是学习、事业</span></p><p><span>好吧，至少今晚，我是快乐的</span></p><h2 id='付出不要后悔'><span>付出，不要后悔</span></h2><blockquote><p><span>2024年3月1日</span></p></blockquote><p><span>付出，不要后悔；失去，也别遗憾。</span></p><p><span>人生没有白走的路，每一步都算数。一切经历的，都是为了将来铺路。</span></p><p><span>为了让你，能够过上更合适的生活。</span></p><h2 id='体验生命'><span>体验生命</span></h2><blockquote><p><span>2024年3月3日</span></p></blockquote><p><span>生活哪有那么难，无非就是选择 + 体验。</span></p><p><span>我只是来体验生命的，我什么都拥有不了，也什么都留不住，更不需要证明什么。</span></p><p><span>我来到这个世界，只是为了看花怎么开、水怎样流、太阳怎样升起、夕阳如何落下。</span></p><p><span>没有什么事一定要实现，我们能做的，就是不断尝试、收获、感受，然后放下，经历有趣的事情，遇见难忘的瞬间。</span></p><p><span>一成不变的生活可能很沉闷，但跑起来，就有风。</span></p><h2 id='牢笼都是自己给的'><span>牢笼都是自己给的</span></h2><blockquote><p><span>2024年3月4日</span></p></blockquote><p><span>忘记时间的限制，忘记人生的短暂。把生命当成一次心灵的休闲旅行，而不是一场充满紧张感的激烈赛跑。</span></p><p><span>世界上还有什么会像心灵一样，完完全全属于自己？世界上又有什么能比一颗自由快乐的心灵，更加宝贵？</span></p><p><span>顺其自然，知足常乐。</span></p><p><span>做事之前，没有必要想那些有的没的，什么是非成败，什么得失好坏。</span></p><p><span>只要做到放平自己的心态，坦然应对万物的变化。</span></p><h2 id='天无私覆地无私载'><span>天无私覆，地无私载</span></h2><blockquote><p><span>2024年3月7日</span></p></blockquote><p><span>人们都想得到所谓更好的，得不到，就害怕自己比别人落后，就郁闷，就愤怒，就抑郁，就给自己打鸡血，爬起来加倍地努力。世界就这样越来越卷，人们就这样渐渐失去了单纯的快乐。</span></p><p><span>天行健，君子以自强不息；地势坤，君子以厚德载物。</span></p><p><span>而当心中完全没有了成见，让一颗心变得广阔，而且平静，这时，心中便可以倒映出世界原本的模样。这也就是庄子所说的真人。</span></p><p><span>所以说，心灵决定认知的上限。心中有了成见，就会影响我们认识世界的方法，当用一颗狭隘的心去观察世界，看到的就是一个狭隘的世界。</span></p><p><span>用一颗豁达的心灵去观察世界，世界也会无比的豁达。</span></p><h2 id='照顾自己的心情'><span>照顾自己的心情</span></h2><blockquote><p><span>2024年3月8日</span></p></blockquote><p><span>在这个信息爆炸的年代</span></p><p><span>其实我们都应该多给自己一些时间</span></p><p><span>慢慢地向内求</span></p><p><span>把你自己的内心安顿好、把每天的心情照顾好</span></p><p><span>一切你想要的</span></p><p><span>其实都在路上，它们总会到的</span></p><h2 id='迷茫也更清晰'><span>迷茫，也更清晰</span></h2><blockquote><p><span>2024年3月9日</span></p></blockquote><p><span>实话讲，最近一段时间的简历投递确实是给我一顿折腾，前天是投递一周多以来，收到好消息最多的一天。</span></p><p><span>昨天北京的一家小公司一面完之后，还是很惊喜的。不过今天早上了解了下这家公司周围的住宿环境，住宿确实是个问题呵。周边没有什么合适的，这就让我犯难了。这本来也只是一家小公司，面试难度不高。本来还是计划在这家公司的，现在又有些犹豫，哈哈哈。</span></p><p><span>现在手头的筹码不多，学长推荐的还没消息，BOSS 有个下周给我答复的，看看会不会开设实习生岗位。下周一还有个线下面试，不过今天我看见那个岗位已经关停了，不招了。那一定是没需求了，这次面试会有结果吗？还是会临时取消？还是会被拿去冲 KPI？我不知道，等到周一上午再确认一下。</span></p><p><span>继续学习吧，看看电影、玩玩游戏、写写书啥的。</span></p><p><span>到了下午，写一点日记之后，心情好很多了。</span></p><p><span>我为什么要去思量未来的结果？那是不切实际的，反而白白增添自己的烦恼。</span></p><h2 id='被尘封的记忆'><span>被尘封的记忆</span></h2><blockquote><p><span>2024年3月10日</span></p></blockquote><p><span>为什么说是被尘封的记忆呢，只是因为昨天下午写回忆录的时候，想起来很多经历。明明很有趣，却从来没有跟我兄弟聊起过。</span></p><p><span>去年六月底，我们放假回家到了离石，因为我兄弟要在离石见习半个月。那段日子还挺苦的，找机会好好聊一聊。</span></p><p><span>今年一月份还回了趟离石呵，大半夜的在农贸市场逛，冻死了。回家兄弟三个吃了顿火锅，第二天还给经开了四百多块的药。</span></p><p><span>写到这里就此打住吧，我想回忆上大学以来的每个假期生活了。</span></p><p><span>日子总要向前看，不过现在日复一日的单调生活，实在提不起多大兴趣去感受它。</span></p><p><span>我想要回忆家的感受，记录那些年从我们身边不经意间匆匆流过的岁月，写下我们家的故事。</span></p><h2 id='等一个机会'><span>等一个机会</span></h2><blockquote><p><span>2024年3月11日</span></p></blockquote><p><span>我在等一个机会，一个打破现状的机会。</span></p><p><span>我的身边是有人在支持我的。</span></p><h2 id='豁出去'><span>豁出去</span></h2><blockquote><p><span>2024年3月12日</span></p></blockquote><p><span>“你知道人类最大的武器是什么吗?”</span></p><p><span>“是豁出去的决心。”</span></p><h2 id='回旋镖'><span>回旋镖</span></h2><blockquote><p><span>2024年3月12日</span></p></blockquote><p><span>我学习编程这么长时间以来，发现一件很有意思的事：我在当下制定遥远的计划，总会在不经意间完成，仿佛是一个回旋镖。</span></p><p><span>为什么这么讲呢？比如去年暑假的时候，我想总结下在使用 Spring Boot 进行开发的过程中，遇到的各种问题以及解决方案。听起来很好实现，但不知道怎么完成。</span></p><p><span>正好当时想要自己动手做一个壁纸分享小程序 PicMemories，从项目初期的技术选型、需求分析、架构设计、库表设计，再到后面的编码开发，通过完成完整的项目，不知不觉间我就已经完成了经验总结，还学习了小程序开发的经验技巧。</span></p><p><span>去年劳动节前后，在我的个人博客搭建完成两个月之后，我想更多地了解还有什么其他比较好玩的静态网站搭建方法，于是了解到了 Vuepress、Vitepress、Hugo 等静态站点生成器。在暑假那会儿，分别用这些静态站点生成器搭建了简单的 demo 站点。顺便使用本地 Nginx 根据路由转发，托管静态页面，学习了解了 Nginx 的相关配置和实现原理。</span></p><p><span>在去年年末，实现 Python 大作业之前，我又潜心研究了使用 Vuepress 搭建静态网站的细节，比如侧边栏配置、导航栏配置等等。再后来，了解到了开源的 v-doing 风格的 Vuepress 静态站点生成器，前后给自己的三个项目搭建了开发者文档。还使用 vuepress-hope 风格尝试搭建了网站首页。</span></p><p><span>去年国庆那会儿，在备考软考中级的同时，开始逐渐记忆常见的面试八股问，那会儿就想做一个自己的面经网站。到了今年二月份，敲定了自己的 Memory 全家桶系列，包括 MemoryCode 忆墨轩，但一直没有实际行动。</span></p><p><span>最近在投递简历的过程中，也在巩固复习常见的知识，不知不觉间我已经开始形成体系，而不再是机械地记忆八股文了。正好促成了《从零开始：我的软工求职路》的编写。我原本以为我已经没有上升的空间，只想着快点找个实习先干着。现在看来，我的基本功还不够扎实，还需要时间慢慢培养。</span></p><p><span>这就是我想表达的全部内容了。</span></p><p><span>我想说的是，只有自己的目标足够明确，规划足够清晰，你向前走过的每一步，都一定会给你无尽的回馈。</span></p><h2 id='白热化阶段'><span>白热化阶段</span></h2><blockquote><p><span>2024年3月12日</span></p></blockquote><p><span>临近三月中旬，沟通 + 投简历 + 找日常实习，持续半个月，已经进入白热化阶段。</span></p><p><span>面经是永远背不完的！自备战日常实习以来，直到今晚我才能彻底理解这句话。</span></p><p><span>特么的面试都没有，还隔这天天全力准备面经呢！离秋招还早，抓紧时间提升技术才是王道。</span></p><p><span>现在效率高了不少，除了细节的知识需要我总结，面经我也看了不少了，直接根据 AI 回答就能学到很多东西。</span></p><p><strong><span>从明天开始，抽出一部分时间开始学习新技术：Docker 部署项目、消息队列、ES、算法等。</span></strong></p><h2 id='选择'><span>选择</span></h2><blockquote><p><span>2024年3月12日</span></p></blockquote><p><span>	</span><span>时间过得很快啊，今天才发觉《邓家洼的回忆》已经十多天没有更新了。最近一段时间在写一些很新的东西，记录着那些平凡的日子。</span></p><p><span>	</span><span>昨天在知乎上看到这么一段话，让我感觉很震撼：</span></p><pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang=""><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 11px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">当你老了，回顾一生，就会发觉：</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">什么时候出国读书，什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚，其实都是命运的巨变。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">只是当时站在三岔路口，眼见风云千樯。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">你作出选择的那一日，在日记上，相当沉闷和平凡。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">当时还以为是生命中普通的一天。</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 130px;"></div><div class="CodeMirror-gutters" style="display: none; height: 130px;"></div></div></div></pre><p><span>	</span><span>我不得不这样讲，在读完这句话的那一刻，我与它的灵魂是高度契合的。</span></p><p><span>	</span><span>是啊，往事都是过眼云烟，哪怕是眼前正在发生的事，都不值一提。</span></p><p><span>	</span><span>现在的大学生活是这样的，我正在记录的童年回忆又何尝不是如此呢？</span></p><h2 id='我的故事未写完'><span>我的故事未写完</span></h2><blockquote><p><span>2024年3月13日</span></p></blockquote><p><span>转眼间已经是第四周了，大三下学期也完结了四分之一，时间过得一如既往的快。</span></p><p><span>过去的一个月里，我一直在尝试平衡学业跟生活，不想走向任何一个极端。</span></p><p><span>最近一周里，我在调整自己的最佳状态，有目的的选择在合适的时间里做更高效的事。</span></p><p><span>春风佛面，在冷清却又温馨的早晨，我会选择迎着日出晨跑三十分钟。待到气喘吁吁、汗水浸透衣服之时，我的灵魂好像被刷洗一番，我的生活仿佛又焕然一新。又是新的一天，又是忙碌而充实的一天。</span></p><p><span>吃完午饭回到教室，看看视频打打游戏，趴桌子上踏实地睡一小会儿，整个下午将又是活力四射、精神百倍。</span></p><p><span>晚上，找点时间一部自己喜欢的电影，读一会儿想看的书，把时间留给自己。</span></p><p><span>我一直在憧憬着在工作以后，在忙碌了一天后，能够把一部分时间留给自己。但现在做又何尝不可？活在当下，没有生离死别就已经是最大的幸福。为什么不能在每一个再普通不过的晚间，去选择做自己喜欢的事情？</span></p><p><span>一个人呆着的时候，总会回忆起小时候的事，那些刻在脑海中的记忆时常让我的内心感到温馨，仿佛那些事情好像昨天才发生过。</span></p><p><span>我忍不住去回忆，去记录，写好我自己的故事，那些只属于我自己的故事。</span></p><p><strong><span>我的回忆还很长，我的故事未写完。</span></strong></p><h2 id='明确生活的主线'><span>明确生活的主线</span></h2><blockquote><p><span>2024年3月14日</span></p></blockquote><p><span>什么是生活的主线？就是你的所作、所为、所想都是围绕着这件事去做的，其他事情都是小事，都是辅助。</span></p><p><span>抓大放小，才更可能在这个浮躁的社会里拥有美满的人生。</span></p><p><span>如果你的生活主线是自我成长，那就不要过于在意生活中的挫折。</span></p><p><span>难受是人主要想要去改变的原因。</span></p><p><span>所以，挫折是成长过程中不可跳过的事，都是小事。</span></p><p><span>如果你的生活主线是自由，那就无需在意世俗定义上的成功，也不用在意不必要的责任感和外界的道德绑架。</span></p><p><span>如果你的主线是最求财富，你该做的是选定目标后排除万难，而不是在意此时的负面情绪和事业上的打击。</span></p><p><span>当你明确了生活主线，拥有了坚定的大目标后，就不会把注意力和宝贵的精力放在鸡毛蒜皮的小事上了。</span></p><p><span>而那些内耗和自我怀疑，也就随之烟消云散了。</span></p><p><span>是啊，大象前行，怎可被蚂蚁拦路。</span></p><h2 id='一切都是浮云'><span>一切都是浮云</span></h2><blockquote><p><span>2024年3月14日</span></p></blockquote><p><span>要学的内容很多，这辈子都不能够学完。我为什么会感觉难受？那是因为我在主动追求进步。</span></p><p><span>最近的感受跟去年十一月份临近软考中级的时候是差不多的，因为所有的一切都是我在没事找事，是的我在主动追求进步。</span></p><p><span>北京摄星公司没有消息，还好没抱有多大期望，他们只是不愿意招我这个实习生，却连一个简单的通知都不愿意给到。</span></p><p><span>本地找实习还是很困难的。学长那边没消息，上周答应答复的人事没消息，只是拿到我简历的更是杳无音讯的。</span></p><p><span>近段时间每天都在 BOSS 投递，沟通近400了，但是简历只投出去17份。</span></p><p><span>这两天的 BOSS 回复明显比上周好很多了。可能是投递方式的不对，之前大多都是不活跃的岗位。这几天愿意交流的有很多，明天下午的面试，后天下午的面试。这是我他妈自己争取来的机会，不是别的什么人给我铺平的道路。</span></p><p><span>有些大厂的暑期实习也陆续开始了，也在同步投递中，今天优化了简历，明天可以考虑开始投递，暑期实习并不着急，误不了的。</span></p><p><span>上周六开始到今天，感觉每天的生活都是一样的，日子很平静也很惬意，每天都是忙碌而充实的。</span></p><p><span>我清楚我在做什么，我有明确的职业规划。尽管我也是第一次，但凡事都必须要靠自己闯荡，我他妈拼定了。</span></p><p><span>不就是大三下学期找个本地暑期实习？不就是规划着特么找个大厂的暑期实习？有什么难度？结果会是怎样的？</span></p><p><span>结果只有两种：找到了和没找到。</span></p><p><span>那又如何？人在做，天在看。</span></p><p><span>一个人这辈子百分之九十的财富，都是在四十岁之后积累的。</span></p><p><span>生活吧！活在这浮躁的社会中，作为这肮脏麻木社会的一份子，我不愿意跟别人同流合污，我只需要关注我自己。</span></p><p><span>一切都是浮云，一切都将会过去，而那过去了的，都将成为亲切的怀恋。</span></p><h2 id='山西中维'><span>山西中维</span></h2><blockquote><p><span>2024年3月15日</span></p></blockquote><p><span>	</span><span>三月十四号中午一点，我上午投递的 BOSS 回复我了。简单聊了一会儿，看出来他现在确实很需要人才，于是很爽快地约面十五号下午了。</span></p><p><span>	</span><span>今天上午一直没精神，快七点那会儿醒的，算这学期开学以来起的最早的了。周五上午两节课，看着电脑迷迷糊糊的，只是不知道背了些什么。醒得太早了，一早上竟然都提不起精神。十点多在 BOSS 上确认了下今天下午四点的面试，问公司能不能准时安排。好不容易挨过了上午，吃完饭就回到教室了，这会儿公司那边还没消息。像过去的一周一样，打开电脑充上电，刷着视频听着歌，一种久违的快乐涌上心头。对呀，我现在的生活多滋润：课程又少，逼事不多，一天到晚还是自由自在的。想到这里我就瞬间释然了，在心里默默做了一个决定：日常实习就算了，接下来几个月，加把劲努努力，找个大厂暑期实习就好了。至于今天下午的面试，现在都还没消息呢！大抵是对我没啥信心，要不然我也别去了。大热天的倒两趟公交去那里面试，这不纯纯自讨苦吃？我这样想着，开开心心地跟我兄弟要约好打游戏了。</span></p><p><span>	</span><span>还没开始玩呢，扫了一眼平板上的信息，那家 BOSS 竟然回复我了。打开一看好家伙，公司那边是没问题的，要我再发一份简历给他，他转交给人事下午联系我。看来这面试是推脱不了了，那我就得硬着头皮上了。管他呢，现在才十二点半，离下午四点还早，玩个尽兴再说。看了两个视频就开始打游戏了，时间过得真快，两把游戏打完半个多小时就过去了，时间来到了一点十五分。</span></p><p><span>	</span><span>哟，估计下午两点就得起身了，抓紧时间看会儿面试题吧。接下来的半个多小时里，我心不在焉的记忆着那些看过无数遍的知识点。很奇怪啊，虽然是要面对第一次线下面试，我的内心是丝毫不慌张的。过去两年多的大学生活历炼出了我这样的性格。都约好时间了，人家做好准备还叫我过去面试，不过是聊聊职业规划和目标、谈谈技术问题嘛，这可是我最拿手的。相较于视频远程面试，显然我是很倾向于这次线下面对面交流的。</span><span>		</span></p><p><span>	</span><span>磨蹭到了一点五十分，再不愿意也得动身出发了。我赶快掏出手机打开微信小程序，预定了校内天猫实体店的远程打印服务。打印简历彩色两份，拿好手机和平板装入手提包。想着也没什么别的要拿的了吧，简单整理了一下即刻动身了。谁曾想我没注意看手机电量，这个决定让我后悔了一下午。下了致远楼穿过求真楼，直奔天猫实体店。走到求真楼楼底下那会儿，山西中维的人事给我打了电话，确认了我是今天下午四点要来面试的。过了一会儿还加了微信，确认了面试地点是新岛科技园四层楼。拿到纸质版简历之后我就跑出校门了，这会儿是两点十分左右。看着校门外车水马龙的，暖阳透过云层洒在我的面颊，伴随着微风拂过，此时此刻我竟然感觉很清爽。好想在这里多呆一会儿，可惜我还有个该死的面试。我已经决意要打个出租了，打个车很快的，最慢半个小时也就到了。不慌不忙地在高德上叫了辆出租，虽然路上有点堵，但半小时后还是到了新岛科技园大门外。</span></p><p><span>	</span><span>就在大门外下车吧，看着时间还早，不到三点的样子。走过门卫进了小区，确实是个好小区。小区不大，跟我家那边的小区差不多，安安静静的，大概全中国的小区都是这样子的。我看着地图来到了B楼底下，正想着怎么上楼呢，旁边餐厅门口的小伙热心地走过来问我要去哪。看着我低头看手机地图摸索，他肯定明白我是外来的，对这里不太熟悉。我跟他确认了这是新岛科技园B座，他指示了下要上四层还得绕到楼后边的楼梯口。很感谢这位大哥啊，节省了我不少时间。绕到楼后边果然发现了楼梯口，不过现在上去还为时过早，就在附近随便转转吧。转了一圈没啥意思，这会儿都已经三点了，还是为一个小时之后的面试做做准备吧。我来到小区中央的花园，找了个台阶就坐下了。</span></p><p><span>	</span><span>到了这时才发现手机只剩下百分之四十的电量了，赶紧把所有后台清空，定位也关了扔在一旁。抓紧这点时间看看面试题，但还是有些力不从心的。大中午的没睡个好觉，坐在这里口干舌燥的，更着急的是有点尿急还想上厕所呢。那没啥好办法，只能是等了。到了三点五十，我站起身来整理了下，重新来到了楼梯口。跟人事微信上打了招呼就上了四楼。到了门口人家把我叫进去了，领着我到了一间办公室开始填表。只是一些简单的个人信息和职业规划，表很快就填完了。我简单做了自我介绍，她也给我讲了下公司规模、业务方向，态度很诚恳。过了两分钟左右，她又领着我来到隔壁办公室，说待会儿有会软件部门的人来考察面试。</span></p><p><span>	</span><span>很快就有人进来了，是个大叔。他介绍他是软件自研部门主管，就开始面试了。还是简单地做了下自我介绍，跟主管做了下技术上的探讨，这里就不多说了。他的考查方式很有特点，点到为止，光听你的回答就能看出你在这方面的理解力和水平了。有不会的他也会细致地讲解和纠正，还很愿意跟我分享公司的情况、入职注意事项啥的。最后的结果是他对我很满意，首先是计算机理论基础比较扎实，再一个是山西大学的学生，这个相较于其他学校的学生来讲，还是很有优势的。最后探讨了下薪资问题和就职时间问题，还把人事领进来聊了会儿，这场长达一个多小时的面试就结束了。</span></p><p><span>	</span><span>这次面试很愉快啊，下了楼就快六点了。等我出了小区，穿过两条街到了对面公交站点等公交的时候，手机就剩二十度电了。这站牌下人还挺多，车来车往的也很热闹，跟身旁候车的其他人一样，我的脸上也是写满了疲惫。我不熟悉这片的通勤路线，只是一边看着高德地图推荐的公交方案，一边留意着过往的车辆。连续来了好几趟公交，要么不是我要坐的，要么就是人满了挤不上去。等了有十五分钟左右，好歹上了一辆公交。上车的时候还刷错卡了，这躺车的乘车码竟然是晋中卡，我还拿着太原市卡刷车呢。过了几个站点，陆续上来好几拨人，我从前门口被挤到后门口，手机抓在手里都抬不起胳膊来，难受得要命。最关键的是我的手机还没电了，眼看着就剩十九度电了，还在一点一点往下掉。更麻烦的是我到现在还不太明白这趟车的行程是什么样的，只是看着高德地图上它是往财经大学方向开过去的，管他呢，丢不了。过了十五分钟，司机吆喝一声“财经大学有没有要下的”，我就立刻反应过来了。财经大学站点下了公交，附近就会有86路公交直达东山校区的，我赶紧在这个站点下了车。</span></p><p><span>	</span><span>下了公交穿过一条街，径直来到财经大学和山西大学坞城校区前的公交站点候车。这个地方感觉很熟悉，五个月前我来财大考取软考证书的时候就来过这里。等了七八分钟左右，86路公交就来了。坐上86路公交，我的心终于放平了。大约过了四十分钟，总算抵达东山小区南门口了。晚上这里很热闹啊，街对面都是摆摊的。这情景跟上次我考完试回来简直一模一样，不过这次我还拍了照录了视频。</span></p><p><span>	</span><span>排队刷脸进了校园，这会儿才七点半，比我预料的要快很多。不过我快要饿死了，一进校园就赶快往餐厅跑，连快递都顾不上取。来到餐厅本来打算先去二楼上个厕所的，无奈实在是太饿了，走到一楼看见稀饭窗口还有卖的就停下脚步了。买了一碗小米粥和三个饼，就开始狼吞虎咽起来。吃完饭出了餐厅就整八点了，这会儿手机竟然撑住了，还剩九度电量。稍作休整，直接去致远楼教室。</span></p><p><span>	</span><span>还是熟悉的位置啊，这地方感觉可真温馨。中午两点出了教室门，在外面跑跳了一下午，坐车太久了还有点晕车。跟好兄弟和小穆微信里下午的的事，总算能安心地玩一会儿了。我只感觉这几天的努力没有白费，就算今天的面试结果没有着落，我也不会后悔。只是这两天要好好休息下了，在接到公司的通知前，我得好好调养调养，一是为了在正式工作前修正一番，二是最近一段时间确实心力交瘁了，哪怕结果对我不利，我也好及时准备接下来的简历投递。特么的放假说早了，这哪里放假了，比上周一整周都累人。</span></p><p><span>	</span><span>今天的面试情况就是这样，就先写到这里吧。</span></p><h2 id='隐匿'><span>隐匿</span></h2><blockquote><p><span>2024年3月17日</span></p></blockquote><p><span>	</span><span>永远不要让外人知道你在想什么。</span></p><h2 id='念念不忘必有回响'><span>念念不忘，必有回响</span></h2><blockquote><p><span>2024年3月18日</span></p></blockquote><p><span>	</span><span>今天周一，上午十点三十八分，我收到了山西中维的人事发来的录用通知书。</span></p><p><span>	</span><span>400+沟通，两周多投递，两场面试，耗时二十二天，我拿下了第一份实习工作。</span></p><p><span>	</span><span>在短短二十多天的求职过程中，我的心理发生了很大的变化。每天在求职软件上沟通交流、时刻留意着频繁总结记忆那些八股文知识点、一遍遍地迭代简历……一个人呆在餐厅或者教室，一坐就是一整天。这两周多我每天三点一线，与其说日子过得自在且充实，倒不如说每天都浑浑噩噩，活得不明所以。最开始投简历的那几天，总是幻想着我这么优秀，投出几份就肯定能有邀约面试的。不知道是不是错觉，刚开始投递的时候，无论是在 BOSS、实习僧这些招聘软件，还是在企业官网、牛客直推的链接上，整体反馈还算是比较积极的。</span></p><p><span>	</span><span>在二月二十七号早，凌晨六点半被我哥的微信消息给吓得惊坐起来：我的英语六级没过。妈的第三次考六级了，本来还胸有成竹的结果还是没过。当天下午我就以极高的效率完成了第一版完整的简历，后来就是以两三天一版的迭代速度，边投边优化简历。这期间确实有很多故事可以讲，比如第三周周四跟专业课老师交流、第一次约到北京一家小公司的远程面试、王宇学长把我的简历拿去推给人事……很多我刚刚还在经历着的事情，回过头来看却发现早已是过眼云烟，不值一提了。</span></p><p><span>	</span><span>而我与这家公司结缘完全是一个契机。上周周四，距离我宣布备战日常实习已经进入白热化阶段的三天后，我仍然在百无聊赖打开 BOSS 投递着简历。这个阶段我已经不再考虑太原市以外的机会了，仍在官网投递的大厂除外。那天中午我跟往常一样点开今日推荐就开始沟通，一口气又沟通了十几家。这家公司回复的很及时，五分钟不到就回复我并开始询问我的个人情况。详细的经过我这里按下不表，前文已经写过了。总之，沟通投递了近二十天，我的心性早已被抹平。有过的唯一的一次面试经历，不仅让我收获了宝贵的经验，更锻炼了我处变不惊、洽谈自若的本领。那天中午天气很毒辣，我本来对这次面试不抱有任何希望，还试探性地问了下今天下午的面试能否准时开始。我当时这样想着：如果公司这边回复不及时，或者让我感觉很怠慢，那我就直接单方面终止这场邀约面试。本来都已经到周末了，今天就应该是个放松心情的好日子。连续精神高压熬过了两周，到头来没有一个好结果，纵然我心有不甘却又无可奈何。我几乎已经决定放弃日常实习的准备了，倒不如再历练两个月，直接冲刺大厂暑期实习。</span></p><p><span>	</span><span>结果就是当天中午公司回话说，他们已经做好今天下午面试的准备。看到消息的我在那一瞬间，好心情一下子跌落谷底，这算是骑虎难下、身不由己了。我硬着头皮准备好下午的面试，却没想到这次面试出奇的顺利，直接促成了我人生中第一次日常实习。我不得不承认，这确实有很大的运气成分在里面，是一件很凑巧的事情。只差一点我就要放弃这次机会了，而这来之不易的机会是我靠自己争取来的。但是要没有扎实的理论基础和从容不迫的谈吐，我又如何能在一群求职者当中脱颖而出，深得用人单位赏识？我确实很幸运，那是因为我值得这份幸运。</span></p><p><span>	</span><span>纵然这只是一个小小的开始、一次微不足道的尝试，我明白我已经做到最好了。</span></p><p><span>	</span><span>今天收到了人事的录用通知，我就知道属于我的时代来临了。我开始从各个方面做准备，事无巨细：每周五天全勤是我亲口跟单位保证过的，一方面是要赢得他们的信任，不择一切手段把我这次来之不易的机会；另一方面是我确实有一定的把握，能够均衡好工作和学业二者间的关系。那具体要怎么做呢？我先去找导员请了三天的病假，踏出第一步，为未来的形势试试水。果不其然，导员这关是最麻烦的，在我看来甚至有点不尽人意。早在上周周一我就跟她打探过我校本科学生离校实习的相关流程，她只是一口回绝，甚至没有再帮我多问两句。特么的我都已经说出口了，你是我的辅导员我是你们班的学生，就不能稍稍尽点地主之谊，帮帮我这个小忙？也就只能在班级动员大会上就着那些鸡毛蒜皮的小事，跟小学老师一样反复念叨着那不知道嚷了几十遍的班级纪律要点，在台上大放厥词、虚空索敌。</span></p><p><span>	</span><span>那我就之后便尽量减少办理假条的次数吧，省时又省心。关于住宿，我已经决断了要在短期内租到合适的房子，这样通勤就会很方便了。中午已经商量跟我哥朋友推荐的房东商量好，这周周末要去看房子。</span></p><blockquote><p><span>	</span><span>2024年3月22日</span></p></blockquote><p><span>实习第四天，基本完成了主管交代的任务。今天周五，已经跟房东约好明天中午在小马村附近见面，租个小房子。</span></p><h2 id='忙碌的一天'><span>忙碌的一天</span></h2><blockquote><p><span>2024年3月22日</span></p></blockquote><p><span>每晚回来都在抓紧时间玩，确实没多大精力再做总结了。简单记录一下昨天吧：</span></p><p><span>早上正常到岗，八点整就能来到单位小区了。就是人事还没给我开通人脸识别，进不去办公室大门。</span></p><p><span>中午在楼底的山西面馆吃了一碗油泼面。挺贵的，十四块一碗根本吃不饱。</span></p><p><span>吃完午饭耍了会儿视频就睡觉了，眯了半小时。</span></p><p><span>下午继续做公司软著整理，找到合适的源码真不容易。</span></p><p><span>下班前还开了一个部门会议，每个人都要简单介绍一下自己的工作进度。</span></p><p><span>会议开了半个多小时，很快就到六点了。单位要求打扫办公室卫生，我就先跑了，学校还有个安全教育作业没写呢。</span></p><p><span>周六就要考计算机等级四级了，准备一下。上午考完下午就得去看房子了，又是闲不下的周末啊。</span></p><p><span>这几天晕车有点好转了，或者说有点严重了，妈的。</span></p><h2 id='再出发'><span>再出发</span></h2><blockquote><p><span>2024年3月24日</span></p></blockquote><p><span>今天是一个普通的周日，也是很值得纪念的一天。</span></p><p><span>自从上周二开始试岗后，我的生活就发生了翻天覆地的变化。每天早上雷打不动六点二十起，赶在八点半前去到单位上班。晚上六点下班，但有时候组会开到很晚，只能等到七点多才能走。等晚上回到学校经常是八点之后，要么去餐厅吃简单的稀饭饼子，要么路上啃个面包直接去自习室，晚上回去带桶泡面吃。</span></p><p><span>今天早上好不容易能睡个懒觉，赖到快七点半才起床。洗了个澡，快速收拾了一下要拿的衣服、被褥和一些洗漱用品，还有一些吃的喝的。总共收拾好了一个背包和一个书包，直接去到致远楼A座309去自习。</span></p><p><span>中午本来想着简单吃一顿午饭，下午再努努力完善一下公司软著归档的，结果吃到一半又遇见了小穆。相见如故啊，仅仅一周多没见面，我目前的处境却是发生了翻天覆地的变化。跟往常一样，我俩聊了很多，我很喜欢跟她讲话。小穆还帮我还回了上周我取错的快递，算是给我解决了一个大麻烦。</span></p><p><span>再回到教室就是下午四点了，也没啥心思继续学习，只好是百无聊赖间刷着B站视频。五点半我就出发了，背着书包提着背包，冒着大雨打车去小马村。</span></p><p><span>雨下的真的很大，这也是今年的第一场雨吧。半个小时后我就到了，走在你来我网这个小巷子里，心里竟然感到一丝难得的亲切。</span></p><p><span>晚上就是安顿好自己的小家，吃饱喝足后刷刷视频，在十一点半就躺下睡了。今天实在是太困了，再加上明天还要早起上班，还是早点睡为妙。</span></p><p><img src="https://gitee.com/deng-2022/pictures/raw/master/images/image-20240326175948884.png" referrerpolicy="no-referrer" alt="image-20240326175948884"></p><h2 id='租房生活'><span>租房生活</span></h2><blockquote><p><span>2024年3月25日</span></p></blockquote><p><span>前天来租房的时候就没有注意到，阿姨给的蓝色卡片是用来开大门的。</span></p><p><span>没有卡片，昨晚都没能方便地下楼吃晚饭。</span></p><p><span>今天早上快七点半下楼，又是开不了大门。只好是等待某个有缘人，从里门或者外门给我开个门吧。</span></p><p><span>租房进来的时候是阿姨给开的门，当时没留意。下楼出门的时候正好有人在开门，也没注意。我根本不会想到，进出这大门必须要用蓝色卡片刷门才可以。周末两天，也不知道蓝色卡片丢在哪里，总之不在我身上了。</span></p><p><span>希望阿姨今天就能给到我卡片吧，这样住宿就很方便了。</span></p><p><span>中午吃了一碗十六块钱的麻辣米线，有点小贵，不过挺好吃的，就是没有我想象中的那么耐饱。</span></p><p><span>嘿嘿嘿，下班前阿姨跟我说已经修好了水的问题，是进水阀门没有开，马桶也能用了。她把大门门禁卡放在平价超市里了，晚上回去我就取到啦。</span></p><p><span>取到卡先不着急回去，在附近的小饭馆里吃了一碗热气腾腾的拉面，真不错。</span></p><p><span>晚上太渴了，下楼买了一瓶水，这屋子离超市真的近，很方便。</span></p><p><span>又是惬意的晚间生活，感觉玩的太过火了，但想想这其实是应该的。</span></p><p><span>这两天是忙碌却又清闲的：忙碌是因为总觉得每天要处理很多事情，很难静下心来，所以这多半是心理作用。清闲是因为确实没有那么多事情要办，一切都是提前焦虑心理在作祟。</span></p><p><span>每天过着两点一线的生活，仿佛是我的未来工作生活的缩影。其实只要在第二天早上回味一下昨天，你会发现一切都是那么乏味，根本不需要每天把自己搞得心力交瘁。</span></p><p><span>过两天慢慢适应了之后，也就是等一切都安顿下来，我可以试着做一个详细的短期规划。</span></p><p><span>下了班就该玩闹，上班期间为什么不能学点新东西。每天看着那些枯燥的业务代码还是很无聊的，我需要注入新能量。</span></p><p><strong><span>后续的租房生活记录就不在这里写了，写在《在人间》栏目下吧。</span></strong></p><h2 id='知遗憾而惜当下'><span>知遗憾而惜当下</span></h2><blockquote><p><span>2024年3月27日</span></p></blockquote><p><span>少时，阅历不到，我们读不懂诗中的遗憾，后来经历了诸多不如意，这才终于真正明白那些诗句。</span></p><p><span>此刻感慨万千，但也不要因此过多感伤。</span></p><p><span>因为我们的人生还有很长，一程有一程的风景，一山有一山的错落。</span></p><p><span>十八岁没看成的风景，三十岁再去欣赏也没什么；</span></p><p><span>年少时没追到的人，将其珍藏于心也是一种美好。</span></p><p><span>这烟火人间，事事遗憾，事事也值得。</span></p><p><span>你若能知遗憾而惜当下，那么往后所有的经历，便都会让你邂逅生命里最美的风景。</span></p><h2 id='最爽的二十分钟'><span>最爽的二十分钟</span></h2><blockquote><p><span>2024年3月28日</span></p></blockquote><p><span>我一天中最爽的二十分钟：</span></p><p><span>上班时，从平阳路南中环街口走到南中环产业路口的十分钟。</span></p><p><span>下班后，从小马村公交站点走到出租小屋楼底的十分钟。</span></p><p>&nbsp;</p><blockquote><p><span>2024年3月28日</span></p></blockquote><p><span>	</span><span>一晃半个多月又过去了，《邓家洼的回忆》还是没有完成。</span></p><p><span>	</span><span>这半个多月以来，我收获了在过去二十多年生活中从未有过的体验。我的生活在有条不紊地进行着，一切都在我的规划之中。但事实是这样的吗？没有任何人能够预知未来，我当然也不例外。我所制定的规划，仅仅是一种狭义上的短期计划，跟事实上的人生规划相差甚远。我还不知道我将要面对的是什么。</span></p><p><span>	</span><span>但有一点是可以肯定的，那就是：我正在追求进步，同时我也一直在进步，这就足够了。</span></p><p><span>	</span><span>我一直在想着以什么样的叙事结构来描述我对邓家洼的那段记忆，这个问题确实让我很苦恼。早在今年年前，也就是正月六号早上，我就开始搜寻自己的记忆碎片，着手尝试用文字记录这段回忆。我写下了很多东西，很多值得回忆的东西。但这样的叙事又显得有些凌乱了，我感觉没有头绪。</span></p><h2 id='生活的松弛感'><span>生活的松弛感</span></h2><blockquote><p><span>2024年3月30日</span></p></blockquote><p><span>一周的租房生活，磨练了我的心劲的同时，也让我第一次尝试去体会社会中的人情冷暖。</span></p><p><span>我为什么总是莫名感到焦虑和遗憾呢，明明现在的生活已经很如意了。</span></p><p><span>是啊，今天的生活已经很如意了。生活，无非就是生下来、活下去，没有什么别的东西。</span></p><p><span>听着音乐，慢吞吞地收拾房间，尽量不去想那些乱七八糟的人或事。我很珍惜这样的时光，让我感觉自己还在好好生活着。想想陶渊明隐居深山，每天就是端坐在小院前，随性吟诗一首，不也过得自由散漫嘛？我可太佩服这样的人了。</span></p><p><span>可现在的我有时候也会感到困惑，就连自己都不明白我究竟想要什么。</span></p><p><span>那么，就保持生活的松弛感吧！不论将要发生什么，都去坦然面对，去拥抱生活，感受生活。</span></p><h2 id='十字路口'><span>十字路口</span></h2><blockquote><p><span>2024年4月5日</span></p></blockquote><p><span>	</span><span>有时候闲下心来想，总感觉我正处在人生的十字路口，茫然四顾却不知前路在何方。</span></p><p><span>	</span><span>仍然忘不了从二月底到三月中旬，历时三周的简历迭代 + 投递 + 八股记忆，终于找到了这份实习。还记得在二月二十七号那天晚上，我说过：</span><strong><span>从明天开始投递简历，在第一封简历投递出去之后，我的大学生涯就宣告结束了</span></strong><span>。在那段时间，我每天早上来到学校餐厅二楼自习，这里不会被舍友打扰。过完年刚开学那会儿我就筹划着这次实习：购买流量卡，解决校内流量问题；购买大号充电宝，解决电量问题；购买可折叠马扎、可折叠桌子，解决面试环境问题……从上学期期末考试期间开始，到放寒假过年，再到年后开学的三周内，连续不断地持续两个多月的准备，终于有了好的结果。</span></p><p><span>	</span><span>从三月十五号那天下午面试完直到今天，我都没有再系统地好好学习任何一块专业知识。这二十天以来，除了适应新的工作环境，吸收学习工作经验，在其他方面还遇到了很多困难：通勤不方便，从学校到单位来回长达三个小时；吃饭不方便，中午在单位楼下附近吃饭，晚上回去太晚只能吃稀饭馒头或者泡面；住宿不方便，在学校和单位两地奔波，整个太原却没有我歇脚的地方；课业问题不好解决，有的老师上课出勤率考察比较严格，尤其是这学期新开设的体育课，搞不好要给我挂科了……这些困难直到今天还在困扰着我，我必须要寻求解决之道，甚至是适应这样的生活。</span></p><p><span>	</span><span>不管怎么说，我还是老生常谈，我已经迈出了这一步。未来的一切都是未知，我现在的租房实习生活，对一个多月前的我来说，也是未知。这就是生活的意义：</span><strong><span>正因为前方的一切都是未知数，所以需要我们鼓起莫大的勇气和好奇心，去尽自己所能探索这个世界</span></strong><span>。</span></p><h2 id='往事云烟'><span>往事云烟</span></h2><blockquote><p><span>2024年4月5日</span></p></blockquote><p><span>	</span><span>谁说离开邓家洼村之后，就没有过快乐的记忆呢？</span></p><p><span>	</span><span>今天下午突然想翻翻看手机里的照片，一下就把我的思绪牵引到了高考后的那个夏天。相册里保存的那些照片，是那些年的美好生活记忆。我看到时隔多年后，我们兄弟俩刚学的折纸鹤、那年六月的天空中各种形态各异的云彩、至今为止最后一次在家过的生日、上大学前去太原的一次旅行、写过的入党申请书、周末里相跟舍友们去隔壁坞城校区玩耍、彩虹志愿者协会晚会、大东关校区里吃过的各种美食和操场的夜景、各种奇怪角度下的迷之自信的自拍照、宿舍里搞聚会集体观看英雄联盟联赛、班里搞团建包场去包饺子吃大餐、在旧校区脏乱差的宿舍条件下快乐地刷着视频、疫情期间校内封路集体做核酸、在那之后每个夏天里我们兄弟俩的搞怪照片和搞笑幼稚的聊天记录、荒野乱斗乱杀的精彩集锦……</span></p><p><span>	</span><span>好多事情我都已经忘记了，我几乎忘记了我这两年里经历过的一切。我总是抬头向前看，追寻着一直以来深藏在内心深处的人生方向，自认为自己选择的道路是正确的。</span><strong><span>其实不论正确与否，都不应该让眼前的对未来的执着、对当下处境的不满甚至是担忧和焦虑蒙蔽了双眸。</span></strong><span>我总是要明白自己是谁，我经历过什么，从哪儿来要到哪里去。</span></p><p><span>	</span><span>那些过去的记忆啊。为什么人不能乘坐时光机，或者能把过去的各个阶段的生活重新放映一遍，让我再次回味当时的处境，看看能否做出不一样的抉择呢。正是我们的过去，才成就了我们的当下。我们总是在为当下的事情感到焦虑，对以后的生活发愁不已。那恰恰是因为我们已经忘记了当初为什么要出发，忘记了来时走过的路，忘记了我们自己到底是谁。</span></p><p><span>	</span><span>人当然不能总是会在自己的幻想中，但思考自己曾经走过的路、重新感受所经历过的一切，并不意味着要让自己停滞不前。相反，要从中汲取力量和明确方向，</span><strong><span>拨开云雾见青天</span></strong><span>。看吧，在这操蛋喧闹的繁华尘世下，总会有属于我自己的立足之地，总会有忙碌一天之后的那个独属于自己的温暖港湾、总会有不经意间的意想不到的快乐。</span></p><p><span>	</span><strong><span>好好生活下去吧，凡尘往事，皆为过往云烟。</span></strong></p><h2 id='归零'><span>归零</span></h2><blockquote><p><span>2024年4月6日</span></p></blockquote><p><span>	</span><span>晚间，妈妈发微信问我说要不要给我买一床被子。</span></p><p><span>	</span><span>学校的被子要拿过来的话确实费劲，而且万一以后在学校过夜的话还要用呢，暂时不能拿走。妈妈直接在淘宝给我买了一床被子，过两天就能回来了。现在这天气不冷，睡觉盖个薄被褥就可以，还是挺幸运的。但妈妈不放心呵，她说夜深了还是会冷的，没有被子怎么睡得好。这个家里数我年纪最小，现在为了提前积攒工作经验，着急在校外找工作。刚开始一个人住确实会有很多不便，但也少了很多麻烦事。</span></p><p><span>	</span><span>她担心我一个人在外，身边没个照应会很不安全。其实在学校的那些日子里，我又何尝不是一个人呢。一个人学习，一个人吃饭，一个人跑步，一个人在自习到很晚才回宿舍睡觉。我已经适应了这样一个人的生活，不禁不觉得孤独，相反我非常享受这来之不易的宁静。我正走在我规划好的路线上，我没有让家人失望，他们一直都在背后全力支持我。最重要的是，我没有让自己失望，我他妈做到了目前能做到的最好的。</span></p><p><span>	</span><span>到点了，妈妈也要去上夜班了。有感而发，方才写下了这段文字。</span></p><p><span>	</span><span>归零，把心态调整至最佳，</span><strong><span>去迎接二十二岁以及往后生命中的每一天，每一分，每一秒</span></strong><span>。</span></p><h2 id='背起旧行囊'><span>背起旧行囊</span></h2><blockquote><p><span>2024年4月6日</span></p></blockquote><p><strong><span>看似最枯燥、最基础的东西往往具有最长久的生命力。</span></strong></p><h2 id='丰富的平静'><span>丰富的平静</span></h2><blockquote><p><span>2024年4月9日</span></p></blockquote><p><strong><span>生命的最高境界，是丰富的平静</span></strong><span>。</span></p><p><span>安静是因为摆脱了外界的诱惑，丰富是因为拥有了内在的宝藏</span></p><p><span>平静地自处，并非在无聊中浪费时间。</span></p><p><span>而是一种摒弃喧嚣的魄力，一种降服躁动的智慧，也是一次探索内心的尝试。</span></p><p><span>心情不好时，哪怕没有梭罗的康科德河，我们也可以在家附近的三公里散散步；</span></p><p><span>寂寞难耐时，就算没有兄长好友开解陪伴，我们也可以一个人做点喜欢的事。</span></p><p><span>静下来，敏锐的洞察会让人在庸常的生活中，感受到更多的有趣与美好。</span></p><p><strong><span>世界不过是内心的投影，你心中是纷纷扰扰的闹事，那生活则无一处是净土。</span></strong></p><p><span>只有熄灭心中躁动，我们的世界才会回归静谧，变得丰富而有序。</span></p><h2 id='六个月'><span>六个月</span></h2><blockquote><p><span>2024年4月10日</span></p></blockquote><p><span>恍惚间，我意识到离下半年秋招已经不远了，只剩下不到半年的时间。</span></p><p><span>我不能再像最近这两周一样肆意玩乐，到了该调整状态到巅峰的时刻了。</span></p><p><span>项目、算法、八股、学习习惯……今晚再详细闲聊吧，白天好好工作。</span></p><h2 id='南柯一梦'><span>南柯一梦</span></h2><blockquote><p><span>2024年4月10日</span></p></blockquote><p><span>我想念我的兄弟了，只盼着今年夏天快点到来，相跟上出去玩。</span></p><p><strong><span>怀念小时候啊，放假前的那个下午。院子里微风吹过，我们都懒洋洋地趴在书桌上。下课以后，站在树梢下，看着伙伴们玩耍。</span></strong></p><p><strong><span>好多小时候的回忆涌入我的脑海，仿佛是一张张画像展示在我眼前：清晨下的静谧的万物和清新的空气、暖阳下懒洋洋的猫咪和热烈的期盼、黄昏下日落西山的无限惆怅，还有夜晚里纷扰的蚊虫和晴朗的夜空……</span></strong></p><p><span>梦醒了，该干活了。</span></p><h2 id='不乱于心不困于情'><span>不乱于心，不困于情</span></h2><blockquote><p><span>2024年4月12日</span></p></blockquote><p><span>上周看到了这些话，丰子恺是中国现代一位多才多艺的文艺大师，他在绘画、文学、翻译、书法、音乐教育等多个领域都有卓越的成就。</span></p><p><span>深谋若谷，深交若水。深明大义，深悉小节。已然，静舒!</span></p><p><span>凡事轮到自己去做时，无论如何总要想出它一点好处来，一以鼓励勇气，二以安慰人心。</span></p><p><span>既然无处可躲，不如傻乐。既然无处可逃，不如喜悦。既然没有净土，不如静心。既然没有如愿，不如释然。</span></p><p><span>有人帮你，是你的幸运，无人帮你，是公正的命运。没有人该为你做什么，因为生命是你自己的，你得为自己负责。</span></p><p><strong><span>哭的时候用全力去哭，笑的时候用全力去笑，一切游戏都甩全力去干。</span></strong></p><p><span>大事难事，看担当；逆境顺境，看胸襟；是喜是怒，看涵养；有舍有得，看智慧；是成是败，看坚持。世间的大人都为生活的琐屑事件所迷着，都忘记人生的根本。</span></p><p><strong><span>这个世界不是有钱人的世界，也不是无钱人的世界，它是有心人的世界。</span></strong></p><p><span>不是世界选择了你，是你选择了这个世界。既然无处可躲，不如傻乐。既然无处可逃，不如喜悦。既然没有净土，不如静心。既然没有如愿，不如释然。</span></p><p><span>你若爱，生活哪里都可爱。你若恨，生活哪里都可恨。你若感恩，处处可感恩。你若成长，事事可成长。</span></p><p><span>由预想进行于实行，由希望变为成功，原是人生事业展进的正道。</span></p><p><span>藏书如山积，读书如水流。山形有限度，水流无时休。</span></p><p><span>你住几层楼？“人生有三层楼：第一层是物质生活，第二层是精神生活，第三层是灵魂生活。”</span></p><p><span>走正确的路，放无心的手，结有道之朋，断无义之友，饮清净之茶，戒色花之酒，开方便之门，闭是非之口。</span></p><p><span>人间的事，只要生机不灭，即使重遭天灾人祸，暂被阻抑，终有抬头的日子。</span></p><p><span>教养孩子，只要教他永远做孩子，即永远不使失却其孩子之心。</span></p><p><span>人生好比乘车，有的早上早下，有的迟上迟下，有的早上迟下，有的迟上早下。上了车纷争坐位，下了车各自回家。</span></p><p><strong><span>不乱于心，不困于情， 不惧将来，不念过往， 如此，安好。</span></strong></p><p><span>世事之乐不在于实行而在于希望，犹似风景之美不在其中而在其外。</span></p><p><span>一粒沙里看出世界，一朵野花里见天国，在你掌中盛住无限，一时间里便是永结。</span></p><p><strong><span>无愧于天，无愧于地，无怍于人，无惧于鬼。</span></strong><span>这样，人生。</span></p><p><span>全为实利打算，换言之，就是只要全家。充其极端，做人全无感情，全无义气，全无趣味，而人就变成枯燥、死板、冷酷、无情的一种动物。这就不是“生活”，而仅是一种“生存”了。</span></p><p><span>人生随处皆不满，欲图解脱，唯于艺术中求之。</span></p><p><span>我的生活全部沉浸在“时间”的急流中，跟了它流下去，没有抬起头来望望这急流的前后的光景的能力。</span></p><p><span>人生二十而知有生的利益，二十五而知有明之处必有暗，至于三十的今日，更知明多之处暗亦多，欢浓之时愁亦重。</span></p><p><span>有些动物主要是皮值钱，譬如狐狸；有些动物主要是肉值钱，譬如牛；有些动物主要是骨头值钱，譬如人。</span></p><p><span>天空好像一盏乏了油的灯，红光渐渐减弱，我把眼睛守定西天看了一会，看见那光一跳一跳的沉下去，非常细微，但又非常迅速而不可挽救。</span></p><p><span>我的心为四事所占据了：天上的神明与星辰，人间的艺术与儿童。</span></p><p><span>天地间最健全的心眼，就是孩子们的所有物，世间事物的真相，只有孩子们能最明确、最完整地看到。 觉得孩子们都有大丈夫气，大人比起他们来，个个都虚伪卑怯。</span></p><p><span>造物的骗人，使人留连于其每日每时的生的欢喜而不觉其变迁与辛苦，就是用这个方法的。</span></p><p><span>人生本如此,咸淡两由之。</span></p><p><span>我往往在人的不注意，不戒备的时候，瞥见其人的真而美的姿态。</span></p><p><span>人生幸而有了无上的智慧。又不幸而得了这样短促的生命，这样藐小的身躯，这样薄弱的心力，与这样贫乏的物力，致使中人以下的俗众，慑于客观世界的强大，而俯首听命，迷真莫返。</span></p><p><span>使人生圆滑进行的微妙的要素，莫如“渐”；造物主骗人的手段，也莫如“渐”。</span></p><p><span>人的一切生活，实用之外又必讲求趣味。一切东西，好用之外又求其好看。</span></p><h2 id='知识沉淀'><span>知识沉淀</span></h2><blockquote><p><span>2024年4月15日</span></p></blockquote><p><span>今天继续整理个人博客网站，看到了以前写下的文档教程，写的真详细啊。每个新的知识点的概要介绍、实操演示、文档查找、图片展示还有思维引导都十分细致。尽管不能说是好的教程文档，但能看出来我记录的时候是挺用心的。</span></p><p><span>在那个阶段，我对新知识有着很大的好奇心，写的博客也很用心。</span></p><p><span>近段时间，我发觉我在慢慢缺失这种对知识的好奇心了，也就是有点浮躁。从现在开始，得慢慢调整过来。</span></p><p><span>有时间就多看看博客，学习新知识，提升专业水平；做做算法题，巩固基础；写写项目，提升编程能力。</span></p><h2 id='不经意的感动'><span>不经意的感动</span></h2><blockquote><p><span>2024年4月17日</span></p></blockquote><p><span>今晚下班后，想着去菜市场对面的包子铺买几个包子回去吃。没有韭菜包子了，我想了想只好跟老板要了五个包子，五块钱·。</span></p><p><span>老板笑盈盈地看着我说，看你年纪小，今晚的最后一个肉包子就送给你吧！</span></p><p><span>我连连感谢老板啊，真是个好人。</span></p><p><span>一个多月前，我在学校餐厅二楼的窗口打饭时，不小心把校园卡丢了。吃完饭就有同学在企业微信找我，问我是不是丢卡了，现在来二楼餐厅找他。他还发了一张照片，我很清楚能看到他坐在餐厅二楼的哪个位置了。很快我就找到了这位同学，顺利拿回了自己的校园卡。</span></p><p><span>三个月前，上学期期末前，我像往常一样吃完饭放碗碟。那位收盘子的叔叔看着我，给我竖了个大拇指。我先是一愣，随后反应过来是他在表扬我吃饭不糟蹋粮食。确实是这样，整个餐厅里，估计也难找出像我一样把盘子舔得干干净净的同学了。</span></p><p><span>这样的事情太多，我有点想不起来了，之后有时间在这里补充吧。</span></p><p><span>生活中总会有这样不经意的瞬间，即便是陌生人也会在我身处困难之时，慷慨地伸出援手。</span></p><h2 id='思念像风'><span>思念像风</span></h2><blockquote><p><span>2024年4月18日</span></p></blockquote><p><span>思念像风，能到达任何地方。</span></p><h2 id='严于律己宽以待人'><span>严于律己，宽以待人</span></h2><blockquote><p><span>2024年4月20日</span></p></blockquote><p><span>慢品人间烟火色。</span></p><p><span>生活本身就已经很忙碌了，尝试在平凡的生活中寻找乐子吧！</span></p><h2 id='十五件小事'><span>十五件小事</span></h2><blockquote><p><span>2024年4月21日</span></p></blockquote><p><strong><span>亲近自然</span></strong><span>、</span><strong><span>阅读一本好书</span></strong><span>、</span><strong><span>运动释放压力</span></strong><span>、</span><strong><span>创作美食佳肴</span></strong><span>、</span><strong><span>陪伴家人朋友</span></strong><span>、</span><strong><span>记录生活点滴</span></strong><span>、</span><strong><span>尝试新的爱好</span></strong><span>、</span><strong><span>洗个舒爽澡</span></strong><span>、</span><strong><span>打理居家环境</span></strong><span>、</span><strong><span>练习冥想放松</span></strong><span>、</span><strong><span>创作手工艺品</span></strong><span>、</span><strong><span>学习新知技能</span></strong><span>、</span><strong><span>练习呼吸放松</span></strong><span>、</span><strong><span>沉醉音乐韵味</span></strong><span>、</span><strong><span>日记倾诉心事</span></strong></p><h2 id='廉价快乐'><span>廉价快乐</span></h2><blockquote><p><span>2024年4月21日</span></p></blockquote><p><span>顺便在此记录一下：这个栏目是在去年九月初创建的，想着专门在这个栏目下边记录自己的生活感悟。</span></p><p><span>不知不觉间，时间已经过去半年多了。这半年来我经历的事情太多太多了，也成长了许多。</span></p><p><span>所谓自律，就是去对抗那些廉价的快乐。</span></p><p><strong><span>“廉价的快乐是直接给你想要的东西，高等的快乐则会给你设置重重阻碍。”</span></strong></p><p><strong><span>所谓自律，就是去对抗那些廉价的快乐，追求更有价值的生活。</span></strong></p><p><strong><span>毁掉我们的不是我们所憎恨的东西，恰恰是我们所热爱的东西。</span></strong></p><p><strong><span>别让自己的生活沦为低级快乐的牺牲品，因为你还有更精彩的人生，值得去追求。</span></strong></p><p><strong><span>向下放纵的快乐不是快乐，向上努力，向上行走，让你感到人性尊严的快乐，才是真正的快乐。</span></strong></p><p><strong><span>向下放纵的快乐不是快乐，向上努力，向上行走，让你感到人性尊严的快乐，才是真正的快乐。</span></strong></p><p><span>很有感触，《每晚一卷书》的文章总会在合适的时间点醒我，我决心要做回以前的自己。</span></p><h2 id='意义'><span>意义</span></h2><blockquote><p><span>2024年4月22日</span></p></blockquote><p><span>世界本就颓废，所有的意义都是自己赋予的。</span></p><h2 id='阅读'><span>阅读</span></h2><blockquote><p><span>2024年4月22日</span></p></blockquote><p><span>明天就是世界读书日。</span></p><p><span>没有谁的生活不苦，</span><strong><span>阅读是一座随身携带的避难所</span></strong><span>。</span></p><p><span>困顿迷茫时，我们习惯于向外求索，试图依靠金钱物质搭建我们的解忧之所。</span></p><p><span>然而，光鲜的外物有如酒精麻药，它只能暂缓伤痛，并不能根治积郁的苦闷，以及挥之不去的焦虑。</span></p><p><span>唯有书籍，如同涓涓清流，于润物无声中，抚平我们心中的慌张；</span></p><p><span>亦如良药，治愚医心，最终带着我们从逼仄走向开阔。</span></p><p><strong><span>读书是用最低廉的成本，获取最高级的成长策略。</span></strong></p><p><span>今晚我创建了自己的第一个公众号：</span><strong><span>旧梦轻拾</span></strong><span>，在未来漫漫人生路中，我的阅读生活总算开始了。</span></p><h2 id='身份'><span>身份</span></h2><blockquote><p><span>2024年4月23日</span></p></blockquote><p><span>过去的十几年里，我一直都在努力尝试扮演好一个角色：</span><strong><span>学生</span></strong><span>。</span></p><h2 id='笔耕不辍'><span>笔耕不辍</span></h2><blockquote><p><span>2024年4月23日</span></p></blockquote><p><span>笔耕不辍，记录生活点滴，收获成长与智慧。</span></p><p><span>这一年多的时间里，我一直保持着一个好习惯：坚持每天在博客日记上记录生活点滴。</span></p><p><span>这是一件很简单的事，但只有坚持下来才会发现:</span></p><p><strong><span>这些看似微不足道的日常积累，汇聚成了我成长的轨迹，也让我在回首时，能够清晰地看到自己的进步与收获。</span></strong></p><p><span>无论面对何事，皆是如此——只有辛勤耕耘，方能收获丰满的果实。</span></p><p><strong><span>心若有所向往，何惧道阻且长。</span></strong></p><h2 id='圈子'><span>圈子</span></h2><blockquote><p><span>2024年4月24日</span></p></blockquote><p><span>朋友都是阶段性的，圈子都是一个接一个的。</span></p><h2 id='读者'><span>读者</span></h2><blockquote><p><span>2024年4月25日</span></p></blockquote><p><span>脚步丈量不到的地方，文字可以；无法经历的人生，书籍带你相遇。</span></p><p><span>今天中午，我订阅了2024年全年一共二十四本《读者》杂志刊物，我的读书生活开始了。</span></p><p><strong><span>昨天是世界读书日，今天就是我的读书启蒙日。</span></strong></p><h2 id='文化'><span>文化</span></h2><blockquote><p><span>2024年4月26日</span></p></blockquote><p><span>中学那会儿就听语文老师说过这样的话，今天又在某条评论中看到了它：</span></p><p><span>文化是什么？那就是：</span></p><p><strong><span>一个人根植于内心的修养，无需提醒的自觉，以懂得约束为前提的自由和时刻为别人着想的善良。</span></strong></p><h2 id='努力'><span>努力</span></h2><blockquote><p><span>2024年4月27日</span></p></blockquote><p><span>努力是一种习惯，会贯穿一生。</span></p><h2 id='记录这茫茫一生'><span>记录这茫茫一生</span></h2><blockquote><p><span>2024年4月27日</span></p></blockquote><p><span>我每天都有好多新的想法和念头，却不见得都能够动手去实现。</span></p><p><span>我是一个自律的人，这一点我很清楚。同时我也是一个很懒惰的人，这一点毋庸置疑，我比任何人都了解自己。</span></p><p><span>我习惯于把生活分割开来过，确保每天的生活都是充实且有趣的，这样也不枉我活过这一天。</span></p><p><span>我越来越不在乎一天之中能够完成些什么事，自己能够提升多少。相反，我更在乎的是能不能让今天在我的茫茫一生中，留下浓墨重彩的一笔。我希望将来回看这些文字的时候，能切实体味到这些记录背后那平淡简单却热情似火的生活。</span></p><h2 id='窗外的风景'><span>窗外的风景</span></h2><blockquote><p><span>2024年4月28日</span></p></blockquote><p><span>	</span><span>我每天上下班都坐公交，单位距离家的路程，坐公交车加步行半小时都不到。</span></p><p><span>	</span><span>我上下班的这条街有很多经过的公交车，13路，56路，57路，829路等等。根本不用像刚开始上班的前两周一样，在街口的公交站牌底下，眼巴巴地盼着那早已人满为患的公交车驶来。</span></p><p><span>	</span><span>近段时间越来越懒了，记得刚开始我都是七点半左右出发的，到单位也就是八点钟。后来就渐渐开始拖延，不管有没有别的事情，都一定要磨蹭到七点五十以后才出发。这样到公司楼下就是八点二十分左右，掏出手机打开办公软件签到完毕，赶八点半就能去到办公室坐工位上了。久而久之我还总结出一套出行规律：如果赶趟到七点五十八分或者八点零二分时，红灯变绿时过街去到对面站牌底下，然后静静等候下一趟公交车的到来。那么坐上这趟公交，抵达公司前的那两个街道口很大概率都是绿灯，五六分钟的样子就能到达目的地。这几乎是正常行车时间的一半不到，很节省时间的。</span></p><p><span>	</span><span>乘公交车从出租屋到单位的方向是由南向北的。我乘公交车从来不肯坐在座位上，即便有空座也是如此。可能是因为我觉得站着比较舒服，或者说坐久了会感觉难受。每次我乘公交车，一上车便朝着车尾方向走去，然后面向车窗站在后门旁。公交车都是前门上车，后门下车的，驾驶位是在整节车厢内是靠左的，而前门在驾驶位右手边方向。</span></p><p><span>	</span><span>所以在清晨乘公交去上班时，我面向东面，这个方向能看得到朝阳如金，冉冉升起；傍晚时分乘公交下班时，我面向西边，这个方向能看得到落日余晖洒在路面，渐渐西沉。</span></p><p><span>	</span><span>每天上下班时，我都会乘坐同一路公交车，然而窗外的风景和心情却有着天壤之别。清晨，我心情沉重，仿佛被无形的负担压得喘不过气来。我恋恋不舍地离开自己的温馨小屋，走到楼下街对面的站牌下，随着人流挤上了公交车。车厢内死气沉沉，空气仿佛凝固了一般，每个人的面容都是木讷的，眼神中充满了迷惘和疲惫。我面朝车窗，望向外面，只见和我一样行色匆匆的人群，每个人都在为了生活而奔波，却鲜有人能够真正享受这个过程。</span></p><p><span>	</span><span>然而，到了傍晚时分，我的心情却截然不同。我心情愉悦，充满期待地穿过车流，来到站牌下等候着公交车的到来。当公交车缓缓驶入站点，我兴奋地上了车，再次面朝车窗望向外面。此时，映入眼帘的是一片绚烂的晚霞，天空被染成了金黄色和橙红色，仿佛是上天为我们这些辛勤工作一天的人送上的礼物。街道两旁的霓虹灯开始闪烁，行人们脸上洋溢着归家的喜悦和期待。车厢内的氛围也变得轻松起来，人们开始低声交谈，分享着一天中的点滴趣事。</span></p><p><span>	</span><span>就这样，在清晨和傍晚的交替中，我体验着不同的心情和风景。虽然每天都重复着同样的路线，但我却在这其中找到了生活的乐趣和意义。无论是沉重的清晨还是愉悦的傍晚，都是我生活的一部分，都值得我珍惜和感恩。</span></p><h2 id='被讨厌的勇气'><span>被讨厌的勇气</span></h2><blockquote><p><span>2024年4月28日</span></p></blockquote><p><span>一切烦恼都来自于人际关系。</span></p><h2 id='领导核心'><span>领导核心</span></h2><blockquote><p><span>2024年4月30日</span></p></blockquote><p><span>下午单位举办趣味春季运动会，我是二组队长。</span></p><p><span>我们团队有人能很好地组织起来队伍，可以给他们安排任务，或者说有一定的号召力。</span></p><p><span>那我需要做的不是一职两分，让他跟我平起平坐。</span></p><p><span>我只需要管理他，安排必要职责给到他。简单来讲，就是我来管你，你管下面所有人。</span></p><p><span>我之前从来没有过这样的思考。</span></p><p><span>在管理层，从来都不是考验一个人各方面水平高低。你可能不擅长号召，不擅长协调下面每个人之间的关系，不擅长跑腿等。</span></p><p><span>难道你会认为你不适合或者说无法胜任这个职位？</span></p><p><span>你想错了。</span></p><p><span>你的技能点不需要有多全面，不需要你像一个六边形战士那样才能有资格领导起整个团队。</span></p><p><span>你只需要做到一件事：</span><strong><span>找到团队内比你更能擅长干这活的，让他听你的，这事他去办。</span></strong></p><h2 id='倾听内心'><span>倾听内心</span></h2><blockquote><p><span>2024年5月1日</span></p></blockquote><p><span>每个人的内心都有一种渴望，渴望倾听内心真实的声音。</span></p><p><span>如果你听不到它，你就永远找不到你真正在寻找的东西。</span></p><p><span>如果你听到了它，却不遵从它，那你还不如没有被生出来。</span></p><p><span>你的特色是世间独一无二的，如果你听不到自己内心真实的声音，你的一生就会被别人牵着走。</span></p><h2 id='音乐调节'><span>音乐，调节</span></h2><blockquote><p><span>2024年5月1日</span></p></blockquote><p><strong><span>你听什么风格的音乐，就会有着什么样的心情。</span></strong></p><p><strong><span>你想拥有什么样的心情，就去选择听什么风格的音乐。</span></strong></p><p><span>如果你想调整成此刻的生活态度，不妨去从自己喜欢的歌单里找到一首合适的音乐吧。</span></p><p><span>当音乐开启后，相信我，那绝对是一个新世界。</span></p><h2 id='我是谁'><span>我是谁</span></h2><blockquote><p><span>2024年5月1日</span></p></blockquote><p><span>你以为我是谁。</span></p><p><span>两年多的沉淀，三个月的准备，二十天拿下第一份实习。</span></p><p><span>这特么就是我。</span></p><p><span>我很有种，下一步该怎么走我清清楚楚。</span></p><h2 id='团队'><span>团队</span></h2><blockquote><p><span>2024年5月1日</span></p></blockquote><p><span>在工作中跟上大学是不一样的，最大的差别在于你身边的人是有闪光点的。大学里就没有，只要是小组分工合作，基本一个队伍里面想挑出两个有出息的困难。这就产生了一种很奇妙的现象：小组合作的作业，处理往往只是其中极小数目的同学，而剩下的大部分人只是坐享其成。</span></p><p><span>为什么工作中不会出现这样的问题？因为大学课堂没有奖惩机制。你小组作业没有出力，你浑水摸鱼但是因为有大佬在带，所以到最后你学期末成绩还不错。大家都这么干，都可以这么干，享受这种坐享其成、天上掉馅饼却不需要付出哪怕一丁点代价的事情。</span></p><p><span>这就是工作和课堂的区别。每个人都是这个团队里不可或缺的一部分，大家都在会有一技之长都有某方面能力出众，每个人总会发挥点作用。</span></p><p><span>那实在没有可以拿得出手的活怎么办呢，这也怪不得自己没有参与到了。是吗？</span></p><p><span>这当然不怪你。你能力不行，那就滚蛋直接走人，去找一个适合你的或者愿意接纳你的团体中去，这就是最终导向的结果。</span></p><p><strong><span>能行，就留下来做贡献；干不了，那就有缘再见。</span></strong></p><h2 id='公众号'><span>公众号</span></h2><blockquote><p><span>2024年5月2日</span></p></blockquote><p><span>上周周一，我尝试创建了自己的第一个公众号。</span></p><p><span>那公众号的输出内容是什么呢？初衷是写点生活感悟，发表上去。但实施起来却很困难，没有我预料的那般轻松自在。</span></p><p><span>我不是一个爱写作的人，我喜欢在闲下来的时候写点东西，记录生活的这一刻。不知不觉间，写作已经成为了我可以用来消遣的工具，远离那些喧闹的电子榨菜让我感到很平静。我写这些东西只是给自己看，或许也是给以后的自己看，从没想过这能给我带来什么样的物质价值。</span></p><p><span>所以写作这条路基本是断了，不适合我的。</span></p><p><span>最近开始研究AI绘画，这种边玩边学的事情正合我口味，我很喜欢在这上面瞎鼓捣。今早我尝试发表了第一篇图文，又是一个不错的开始。我的计划很简单：日更。因为这件工作本身很简单，我希望我能够保持每天更新的水平，且条目不少于三条。那么就这样做起来吧，一个月之后到底结果如何，我们再见分晓。</span></p><h2 id='孤独'><span>孤独</span></h2><blockquote><p><span>2024年5月2日</span></p></blockquote><p><strong><span>其实我哪里喜欢独自一人，只是习惯了孤独而已</span></strong><span>。</span></p><h2 id='周末'><span>周末</span></h2><blockquote><p><span>2024年5月3日</span></p></blockquote><p><span>为什么周末能让人心情愉悦呢？</span></p><p><span>那是因为，周末跟上班日最大的区别在于，早上醒来后发现：</span><strong><span>至少今天早上的时间是属于自己的</span></strong><span>。</span></p><p><span>哦，再补充一句：</span></p><p><span>如果明天还是周末，那么今天晚上睡前的心情是更加愉快和放松的，因为我知道明天不用早起。</span></p><h2 id='记得来时的路'><span>记得来时的路</span></h2><blockquote><p><span>2024年5月5日</span></p></blockquote><p><span>今天下午反省了自己，竟然忘记了两个月以前甚至是两年多来付出的辛勤和努力，去看待当下的成就和审视自己的行为。</span></p><p><span>这对我来说是不公平的，对摸爬滚打过来的我是很不公平的。同样的，我们每个人都应该是如此。</span></p><p><span>“</span><strong><span>走得再远，也不要忘记来时的路，不要忘记自己曾经是什么样的人</span></strong><span>。”</span></p><p><span>并不是要求你对过去发生的一切耿耿于怀，对往事斤斤计较，无法释怀。</span></p><p><span>而是要时刻提醒着自己，是自己过去经历过的一切：遭受的所有苦难和挫折、承担的所有迷茫和焦虑、享受的所有幸福和快乐，是这些成就了现在的自己。每个人都是独特的，每个人身上都有着最精彩的故事，我们都是生活的主角。</span></p><p><span>向前看，向前走。</span></p><p><span>但走得再远，也请不要忘记来时的路，不要忘记自己要做什么样的人。</span></p><h2 id='每一分钟'><span>每一分钟</span></h2><blockquote><p><span>2024年5月6日</span></p></blockquote><p><span>五一假期结束了，这几天的假期生活以及今天上午起床后的一些选择，让我明白了一件事：</span></p><p><span>不管有多闲适，应该规划好自己的每分钟都应该做什么，至少规划好短时间内应该做什么。</span></p><p><span>这样你会发现，从早上的七点醒来，到晚上十二点多躺下，这期间度过的每时每分都是有意义的，都是量化的。这会让你感觉这一天没有白费，我生活的很开心。</span></p><p><strong><span>过好每一分钟，量化每一分钟。</span></strong></p><h2 id='时刻有想法'><span>时刻有想法</span></h2><blockquote><p><span>2024年5月7日</span></p></blockquote><p><span>我发现最近这段时间很有意思，我的大脑就像放电影一般，时不时会蹦出一个全新的想法。</span></p><p><span>五一假期之前，我尝试注册了第一个微信公众号，了解了发文规则，还收藏了很多公众号排版网站。在五一期间，我尝试使用 AI 绘画发表图文。不过坚持了三天就放弃了，原因很简单：我不喜欢。</span></p><p><span>假期里也没有玩得很痛快，基本就是每天无所事事，想学习却提不起兴趣，想出门散散心又懒得动身。于是我会在刷剧的时候炒个小菜，在无事可做时拿起笔写写画画，健身。打开博客写一写日记，记录下这平凡有有趣的生活日常，这是属于我自己的生活。做完这一切就能让我静下心来，有了好心情的我又能肆无忌惮地玩乐了。</span></p><p><span>晚上出去买点蔬菜和火锅料，晚上边吃小火锅边追剧，小日子过得贼滋润。晚上睡觉前两三个小时，恰好是我一天中精神最亢奋的阶段。这个时候我会深刻反思这段时间自己的缺陷，并规划好近期的学习生活路线。</span></p><p><strong><span>我的思绪一直都在焦虑不安和摆烂憧憬之间徘徊</span></strong><span>。有时候觉得自己状态好差劲，对自己很不满意。想着马上动身去做点什么却往往不会付出行动，只能是看着自己在清醒中堕落。有时候能发现自己身上的闪光点，觉得自己相比同龄人来说已经非常优秀。这个时候我就开始沾沾自喜，仿佛生活又出现了曙光。更多的时候，我会把自己置身事外，选择不从我我自身角度出发去看问题。这样看待问题会更加客观和全面，也更少地掺杂自己的主观评价。我会冷静地思考当下的处境，当下的我正在经历着些什么，这样的工作生活能带给我什么，我是谁以及想要成为什么样的人。</span></p><p><span>在这个物欲横流的社会中，脑袋里想法很多很杂的人不少。但像我这样能记录下这些想法，并客观冷静评价其内涵和影响的人，一定不多。</span></p><p><span>很多时候我都能清晰地感觉到，</span><strong><span>一个人的生活质量如何，他在这个社会上存在的意义是什么，都完全取决于自己的生活态度</span></strong><span>。用一句话简单概括，那就是你觉得自己是什么样的人，你就会成为什么样的人。我两手空空，无事一身轻，那我在生活中就不会有任何烦恼。我只是一个思想，我驾驭着这副躯体，而这副躯体本身是无感的。我的灵魂必须要付诸行动，在关键时刻做出选择，给这副躯体争取机会以获取价值。</span></p><p><span>时刻有想法，丰富自己的精神世界，未尝是一件坏事。</span></p><h2 id='上班'><span>上班</span></h2><blockquote><p><span>2024年5月8日</span></p></blockquote><p><strong><span>上班是为了挣钱，下班就好好该享受生活了</span></strong><span>。</span></p><p><span>这应该才是当代打工人秉持的理念，工作仅仅是工作，是能给自己挣口饭吃的工具。</span></p><p><span>如果你觉得自己在工作中有所提升，个人能力得到了长足的进步，那往往是你对待工作的态度给你的回馈而不是工作本身。</span></p><p><span>当然了，我现阶段的实习生活忙忙碌碌，那么对我个人来讲：</span></p><p><strong><span>上班是为了学习，下班就该在学习之余享受生活。多读读书写写画画，滋养身心，给这沉闷烦躁的工作生活增添一丝乐趣。</span></strong></p><h2 id='厌世的我'><span>厌世的我</span></h2><blockquote><p><span>2024年5月9日</span></p></blockquote><p><span>我不得不承认这样的事实：</span><strong><span>我是一个比较厌世的人</span></strong><span>。</span></p><p><span>我原以为脱离了当下的生活环境，投入到全新的工作经历中，我的心态会有所改变。</span></p><p><span>但其实不然，我总是莫名地对现状感到不满，认为近期自己的个人能力提升没有达到期望，甚至感觉周遭的氛围是压抑无比的。</span></p><p><span>产生这样的想法，或者说这种思维的导向成因是：我始终没有搞清楚自己想要什么，想成为什么。</span></p><p><strong><span>较长的一段时间以来，一直都标榜自己有着独特的想法，能够不容旁人甚至不屑与之同流而独行其道。</span></strong></p><p><strong><span>自喻为独善其身，仿佛能够长久遗世独立一般，不受外界侵扰。</span></strong></p><p><span>但这次，我发觉自己可能错了。但其实这世上哪里有绝对的对错？我只不过是一个厌世的人罢了。</span></p><p><span>我及时醒悟过来并尝试以全新的视角看待现状，用客观的态度打量自身处境。</span></p><p><span>在这无声的夜晚中，在思维清晰却</span><strong><span>在混沌迷茫和希望憧憬中反复迷失</span></strong><span>的此时此刻，我明白了是时候要做出改变。</span></p><h2 id='快乐'><span>快乐</span></h2><blockquote><p><span>2024年5月10日</span></p></blockquote><p><span>没有人能让你不快乐，除了你自己。</span></p><p><span>任何事情，无论好坏，做决定的只能是自己。</span></p><h2 id='不成熟'><span>不成熟</span></h2><blockquote><p><span>2024年5月10日</span></p></blockquote><p><span>人最不成熟的行为就是，心情一好就原谅一切。</span></p><h2 id='早起'><span>早起</span></h2><blockquote><p><span>2024年5月10日</span></p></blockquote><p><span>我在考虑每天早起一小时，不是六点半起，而是：</span></p><p><strong><span>在工作日每天晚上十一点半睡觉，早上五点半起。在周末就恢复正常作息，晚十二点后睡，早上七点半以后起。</span></strong></p><p><span>这样的生活作息能接受吗？</span></p><p><span>其实也不会是什么大事，我只想着现在还年轻，总应该打破常规尝试一下。顺便也能治一治晚上不睡，白天赖床睡懒觉的坏毛病。</span></p><p><span>工作日就这样调整作息，每天就会多出将近两个小时的自由时间。</span></p><p><span>可能头两天甚至一周之内会犯困，但我已经预料到并将努力去克服。</span></p><p><span>我太需要时间了，无论是学习还是娱乐。</span></p><p><span>我需要在忙碌的一天中，多匀出一些时间给自己，这是我能送给自己最好的礼物。</span></p><h2 id='工作规划'><span>工作规划</span></h2><blockquote><p><span>2024年5月11日</span></p></blockquote><p><span>大三，想提早接触工作环境。学校、单位，现阶段对我个人来讲，一定是最关键的时刻。</span></p><p><span>我们一块共事的时间不会很长，可能就只有短短几个月，也希望能跟大家合作愉快。</span></p><p><span>我希望能够在有限的时间里，接触到真实的企业项目，了解软件开发开发流程。这其中包括团队协作、编码开发等等，这是我自己的个人规划；同时也有一些想法：</span></p><p><span>一方面，这毕竟是一份工作，我需要认真对待这份工作；</span></p><p><span>另一方面，我作为团队的一份子，也希望能为团队做些贡献，做一些力所能及的事。</span></p><p><span>在学习中成长，在工作中进步。这是我认为的自己在团队中的地位，或者说作为开发团队的一份子，根据自身能力明确相关职责。</span></p><p><span>这是我在下午想要说的一些话，我的自我认知和工作规划，但我想说以上都是扯淡。</span></p><p><span>工作就只是工作，从上午八点半到晚上八点半的工作，有什么意义么。</span></p><p><span>没有意义。你以为的所谓真实的</span><strong><span>在工作中成长和学习，那是自我思维与眼前信息碰撞的结果</span></strong><span>，跟工作本身毫无关系。</span></p><p><span>我对自己的认知还是很明确的，也不需要跟我将什么工作态度问题，什么工作规划都是扯淡。</span></p><h2 id='午时消遣'><span>午时消遣</span></h2><blockquote><p><span>2024年5月11日</span></p></blockquote><p><span>这两天中午吃完午饭后，午休前还能有半个多小时的娱乐时间。</span></p><p><span>换做以前的我，会尝试抓紧这点零碎时间看看专业技术知识点，但没过一会儿就会昏昏欲睡，效率很低；</span></p><p><span>或者看会儿漫画，刷会儿视频，享受着来之不易的自由时光。</span></p><p><span>但我现在选择刷公众号文章。</span></p><p><span>我发现现在微信公众号里，推送给我的文章都很能引起我的共鸣，看了心情就会变好。</span></p><p><span>在上午做了几个小时的工作之后，我很愿意能有这样的消遣时光，能把前半天的阴霾一扫而光，并为接下来的下午工作生活做好准备。</span></p><p><span>有时候本来心情很沉重的，但看了一些治愈文案之后，马上就能想通。</span></p><p><span>我缺少的不是豁达的心境，而是有时需要别人点醒。</span></p><p><span>那么就这样吧：</span></p><p><strong><span>在沉闷昏睡的上午能期盼着午休前的片刻闲适与安宁，</span></strong></p><p><strong><span>在困倦烦躁的下午能期盼着下班后的难得的放松与自由。</span></strong></p><p><span>每天能有这样两个盼头，生活也就不会很艰难了。</span></p><h2 id='病态的团队'><span>病态的团队</span></h2><blockquote><p><span>2024年5月12日</span></p></blockquote><p><span>你给我指派什么任务，我会按你的要求及时交付让你满意，这就是我的工作，我会认真负责我的工作。</span></p><p><span>工作之外就是我的生活，我自己的生活，谁要跟你这家单位绑定。</span></p><p><span>下班后还要听你跟我谈心，谈就谈还开会让每个人讲，谁要跟你分享我的个人规划和工作计划呢。</span></p><p><span>想了解我？想了解到团队内每个员工的思维方式，那就单独谈，而不是在会议上让每个人挨个“检讨”，就像是扒光了衣服给别人看。</span></p><p><span>这么喜欢说教，这么喜欢管理优化团队，谁认可你这个团队。</span></p><p><span>说话前请认清，每个人都是一个个体，不要把生活跟工作混淆了，不要占用我的时间来告诉我说你应该想想你的工作内容和规划是怎样的。</span></p><p><span>从早到晚都呆在公司，能给我带来什么好处。我只是在学校待厌烦了，出来上个班体验一下而已，我清醒的很。</span></p><p><span>这里的工作安排简直是糟糕，能看出来每天的积极性都不高，开会还要放在下班后。</span></p><p><span>没什么好吐槽的了，昨天跟树宙也聊过很多。他简直就是我的好兄弟，跟她能无话不谈，跟我哥一样。</span></p><p><span>这就是工作，一份工作而已，不要跟我谈什么工作规划，懒得听。</span></p><p><span>我的认知明确，工作态度端正。</span></p><p><span>我是一个个体，我会过好我自己的生活，用不着在一个工作团队里听特么逼逼赖赖，你以为你有多重要。</span></p><p><span>人生在世，最重要的还是家庭和亲人。活了这么大把年纪，不要一副工作狂傻逼什么都不懂的样子。</span></p><p><span>有时间就早点回家，多陪陪自己的父母，多找一些朋友出去散散心，吃喝玩乐。生活才是最重要的。</span></p><p><span>我不会让他们把我同化，因为他们的工作态度在我眼里简直可笑。</span></p><p><span>消极的工作态度，抑郁的工作氛围，漫长的工作时间，开不完的会和优化不完的需求。</span></p><p><span>懒得讲，这就是一群魔怔人，行尸走肉般坐在办公桌前，要为团队做贡献为工作出份力。</span></p><p><span>就是想挣钱而已，谁都明白，那就请提高自己团队的工作效率吧。一直在反复提出问题，总结问题却从来不知道怎么解决。</span></p><p><span>为什么呢？因为这里的制度，把办公环境搞得像监狱一样，光是坐在那就让人感觉难受。</span></p><p><span>我对他们感到惋惜，觉得他们很可怜，但我丝毫不会有任何同情。</span></p><p><span>都是成年人，但考虑问题的方式简直就像是傻逼一样。希望你们能从今天开始，一直到你几十年后老死在病榻上的这段岁月里，到那会儿能回过头来想想。</span></p><p><span>想想自己年轻时为什么要跟个没妈的一样，整天为了工作，为了团队却丝毫没有考虑过自己的家庭和亲人。</span></p><p><span>要求热爱工作是合理的，但如果是以剥夺个人特质且抛开个人需求与规划为前提的话，那就是耍流氓，都是扯淡。</span></p><p><strong><span>这是一个可笑的团队，这是一个病态的社会。</span></strong></p><h2 id='生活就是这样'><span>生活就是这样</span></h2><blockquote><p><span>2024年5月13日</span></p></blockquote><p><span>当你觉得生活很难，工作很烦，感情很苦的时候，不妨这样想一想：</span></p><p><span>要知道，</span><strong><span>世上任何关系走到最后，都不过是相识一场</span></strong><span>。</span></p><p><span>所有的烦恼，也终将在岁月的尘烟中，得到完美的消解。</span></p><h2 id='兄弟'><span>兄弟</span></h2><blockquote><p><span>2024年5月13日</span></p></blockquote><p><strong><span>你带我寻遍繁华世界，流连忘返</span></strong></p><p><strong><span>我为你留住蹉跎岁月，往事如烟</span></strong></p><h2 id='母亲'><span>母亲</span></h2><blockquote><p><span>2024年5月14日</span></p></blockquote><p><span>你从未见过的年轻女孩，她却爱了你一生。</span></p><h2 id='计算问题'><span>计算问题</span></h2><blockquote><p><span>2024年5月15日</span></p></blockquote><p><span>人有两种思维，归纳和假设。</span></p><p><span>一件事，要么已经发生了，要么还没发生。</span></p><p><span>对已经发生的事情，做归纳；对仍未发生的事情，做假设。</span></p><h2 id='内耗'><span>内耗</span></h2><blockquote><p><span>2024年5月16日</span></p></blockquote><p><span>把心安顿在当下，所有的内耗自会烟消云散。</span></p><p><span>大多数人的内耗，往往就源于想得太多，做得太少；摆脱不了过去，又过度担忧未来。</span></p><p><span>可是当你专注于眼前，</span><strong><span>活在此时此刻，心中的焦虑与烦躁便会消解大半。</span></strong></p><p><span>心烦意乱时，去小区的凉亭吹吹风；殚精竭虑时，到附近的公园散散步；消沉悲观时，在自己的房间里看看书……</span></p><p><span>过去的留不住，明天也抓不到，不如清空焦虑与纠结，静下心来把握住今天。</span></p><p><strong><span>日子是过出来的，不是想出来的</span></strong><span>，千忧万虑皆源自我们内心的混乱。</span></p><p><span>而认真生活，就是繁杂困局的出口，也是治愈内耗的良药。</span></p><p><span>很多时候，你纠结的事情或许并不重要，你担忧的事情根本不会发生，你焦虑的事情也总能顺利解决。</span></p><p><span>消耗你的从来不是外界的境况，而是你给自己设置的精神牢笼。</span></p><p><span>以后的日子里，别再自我折磨，放下对人事的杂念，卸下那沉重的枷锁。</span></p><p><span>不忧不惧，物来顺应，你的心有多宽，生命就会有多广阔。</span></p><h2 id='迷路'><span>迷路</span></h2><blockquote><p><span>2024年5月17日</span></p></blockquote><p><span>有目的的人生才会迷路，我只是来人间散步。</span></p><h2 id='成为什么样的人'><span>成为什么样的人</span></h2><blockquote><p><span>2024年5月17日</span></p></blockquote><p><span>工作只是让我们变的原子化，当社会分工越来越细化的时候，我们都是屈从的，</span><strong><span>闲暇的时光才决定了你要成为什么样的人</span></strong><span>。</span></p><p><span>不是我们没有闲暇的时间，而是我们学不会闲暇了。经历了闲暇的时光却得不到休息，我们变得更疲惫更焦虑。</span></p><p><span>这个社会给大家制定了各种各样的 kpi，我们怕输在起跑线上，怕输在各种各样的节点上。</span></p><p><span>我们认为只要出现了一段空窗段时间的闲暇，就不被社会定义为成功者，我们就在慢于这个社会，被这个社会抛弃。</span></p><p><span>但是我们的人生轨道本来就不-样，人生不是一场马拉松。</span></p><p><strong><span>我们活的越来越焦虑的原因是找不到价值感的来源，做什么事情都要求得到反馈。</span></strong></p><p><span>把价值感来源放在了客观的标准，只会让我们活的越来越焦虑。</span></p><p><span>套用越来越多功利的标准让我们闲暇的时光越来越累。</span></p><p><span>所以你要学会闲暇，做你想做的事，爱你想爱的人。</span></p><p><span>最后，</span><strong><span>不是工作的价值决定了你成为谁，那些独属于你的时光才决定了你是谁</span></strong><span>。</span></p><h2 id='学习生活'><span>学习生活</span></h2><blockquote><p><span>2024年5月17日</span></p></blockquote><p><span>在哪里写比较合适呢？思来想去还是决定在这里了，毕竟这地方是用来记录我的思维结晶的。</span></p><p><span>今天早上认真思考了我的实习生活，想到要规划好近期内的学习生活规划。</span></p><p><span>思考得出的结果很简单，那就是：我可能需要</span><strong><span>提前从这家实习单位离职</span></strong><span>，时间节点在期末考试之后，实训基地之前。即在大学最后一个暑假期间，六月底到七月初，我必须要做出决定。</span></p><p><span>遥想今年刚过完年的那段日子，以及开学两周内迫切地在招聘软件和各互联网官网上投递简历的时光，简直是一场梦。</span></p><p><span>我的大学生活仿佛也是一场梦。</span></p><p><span>我迫切地想要找一份实习工作，其目标很明确但原因又很复杂。可以简单归结为两方面：</span></p><ol start='' ><li><strong><span>职业规划</span></strong></li><li><strong><span>校园环境</span></strong></li></ol><p><span>详尽的想法我会考虑在一篇实习总结中聊到，这里按下不表。</span></p><p><span>我决心要尽早离开这个地方了，也是为了迎接我的生活。这里的生活我已经过够了，没意思，我不会允许它占用我太多时间。</span></p><p><span>促使我有强烈找实习的想法，只有一个：</span><strong><span>大三了还窝在学校里上课，是等着毕业就失业吗？</span></strong></p><p><span>我已经体验够了职场生活，虽然两三个月时间很短，但足够了。在大学生涯里，能够脱离课堂提前适应社会生活，一直是我的梦想，现在我已经做到了。</span></p><p><span>这两个多月以来，我过上了我这一生中最自由快乐的独立生活，没有别人，只有我自己。</span></p><p><span>夏天到了，有时间就多陪陪自己的家人。</span></p><p><strong><span>为了照顾自己的心情，更为了自己的未来职业规划，我今天在心里默默做出了这个决定。</span></strong></p><h2 id='低估'><span>低估</span></h2><blockquote><p><span>2024年5月17日</span></p></blockquote><p><strong><span>一个人往往高估了自己一天能做多少事，却低估了自己一年之内能做多少事</span></strong><span>。</span></p><h2 id='趁年轻'><span>趁年轻</span></h2><blockquote><p><span>2024年5月18日</span></p></blockquote><p><span>人生的道路虽然漫长，但紧要处常常只有几步，特别是当人年轻的时候。</span></p><h2 id='这才是生活'><span>这才是生活</span></h2><blockquote><p><span>2024年5月18日</span></p></blockquote><p><span>上班时勤勤恳恳（迷迷糊糊，摸鱼🐟），下班后听着音乐吃美食，在自由中做自己。</span></p><p><span>想到什么就做什么，想边吃着火锅边看电影，想边听音乐边学习，想边锻炼身体边看看闲书……</span></p><p><span>刷手机看到好玩的内容会开怀大笑，脑袋里里蹦出新想法就记录下来。</span></p><p><span>出门取个快递，顺便兜兜风晒晒太阳，玩腻了就看看书读读报，学习一会儿。</span></p><p><span>困得不行了就说服自己，躺一会儿，等起来清醒了点之后再干活吧。</span></p><p><span>跟好兄弟微信聊聊天开开玩笑，讨论着这两个月来追的美剧又多么精彩，剧情看到了哪一步。</span></p><p><span>看见房间凌乱却又实在不想起身打扫，只要我闭上眼睛睡一觉起来，我肯定能有充沛的精力把家里收拾的干干净净。</span></p><p><strong><span>这才是生活。</span></strong></p><h2 id='留恋'><span>留恋</span></h2><blockquote><p><span>2024年5月19日</span></p></blockquote><p><span>时间，过的真快啊！</span></p><p><span>想到经历的太多，有时候眼里禁不住泛起泪花。</span></p><p><span>二十二岁的年纪，虽然正当年少繁华之时，却仍不乏留恋过去的勇气。</span></p><p><span>前段时间我听过的一句话：</span><strong><span>人这一生可以分为很多阶段，每个阶段都有其特定的朋友和生活方式</span></strong><span>。</span></p><p><span>有时候禁不住这样想，为什么时光只能是白驹过隙般，</span></p><p><span>不管我们做什么，总不可能长久地留住当下的时光。</span></p><p><span>不论我们是在欢声笑语还是抑郁阴沉，不论外面是阳光明媚还是阴云密布，总是只能短暂地感受这稍纵即逝的片刻时光。</span></p><p><span>时间就像一把锋利的刀，不因万物流转而作丝毫停留。它柔软地切开了一切混沌与黑暗，只是一直无情地向前推进着。</span></p><p><span>多么想让时间暂停，能让我闭目冥想，思考生活的意义所在。</span></p><p><span>人真的是很复杂的动物，我们总是行色匆匆向前赶路，在忙忙碌碌中却忘记了自己从何而来，要到哪里去。</span></p><p><span>时光荏苒，岁月如梭。这短短几十年的光阴对任何人来讲弥足珍贵，我们不应该总是要求自己必须要活成什么样子。</span></p><p><span>生活是复杂但有规律的，此刻我想做的只有</span><strong><span>避开那些尘世的喧嚣，放空心灵去享受当下</span></strong><span>，用心感受正在经历的一切。</span></p><p><strong><span>我们需要活在过去留恋一些陈年往事，因为这样总能在喧闹的现实中为自己找到一份心灵慰藉</span></strong><span>。</span></p><p><span>我们总要能保持一颗鲜活跳动的心脏，心怀希望去迈向更加自由的远方。</span></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><h1 id='后记'><span>后记</span></h1><p><span>有时花瓣纷飞 ，有时尘土飞扬 ，有时冷冷清清 ，有时熙熙攘攘 ，这就是我们要走的路 。</span></p><ul><li><span>通过这篇文章，我对自己的</span><strong><span>个人成长之路</span></strong><span>有了更清晰的认识。通过梳理和总结</span><strong><span>不同阶段的计划和思考</span></strong><span>，我意识到我在过去的时间里的努力和进步。我看到了自己的目标从最初的模糊到</span><strong><span>日益明确</span></strong><span>，自信也随着成长而增长。每一个新的阶段都为我带来了新的挑战和机遇，而我也逐渐学会了如何应对和适应不同的环境。</span></li></ul><ul><li><span>回顾这些计划和思考，我发现了自己在某些方面的不足和缺漏。然而，这些不足也成为我个人成长的重要推动力，促使我不断学习和提升自己。同时，我也明确了接下来的发展方向和目标，希望能够不断挑战自我，成为更好的自己。</span></li></ul><ul><li><span>我希望通过这篇文章，能够激发读者们对于个人成长和思考的兴趣。每个人的成长之路都是独一无二的，每个阶段都是一个新的起点。我鼓励大家在自己的旅程中也记录下自己的计划和思考，不断梳理和调整自己的目标，并在过程中审视和优化自己的思维方式。愿我们都能在不断成长的路上一起前行，彼此互相启发和促进。</span></li></ul></div></div>
</body>
</html>
                
              </div>
            
            <hr/>
            <div>
              <div class="post-metas my-3">
  
  
</div>


              
  

  <div class="license-box my-3">
    <div class="license-title">
      <div></div>
      <div>http://example.com/2024/05/19/个人成长之路：计划演进与思想蜕变的见证/</div>
    </div>
    <div class="license-meta">
      
        <div class="license-meta-item">
          <div>作者</div>
          <div>Memory</div>
        </div>
      
      
        <div class="license-meta-item license-meta-date">
          <div>发布于</div>
          <div>2024年5月19日</div>
        </div>
      
      
        <div class="license-meta-item license-meta-date">
          <div>更新于</div>
          <div>2024年5月19日</div>
        </div>
      
      
        <div class="license-meta-item">
          <div>许可协议</div>
          <div>
            
              
              
                <a target="_blank" href="https://creativecommons.org/licenses/by/4.0/">
                  <span class="hint--top hint--rounded" aria-label="BY - 署名">
                    <i class="iconfont icon-by"></i>
                  </span>
                </a>
              
            
          </div>
        </div>
      
    </div>
    <div class="license-icon iconfont"></div>
  </div>



              
                <div class="post-prevnext my-3">
                  <article class="post-prev col-6">
                    
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/2024/05/17/%E5%AE%9E%E4%B9%A0%E4%B9%8B%E6%97%85%EF%BC%8C%E6%97%B6%E5%85%89%E6%B5%81%E8%BD%AC%EF%BC%9A%E5%9C%A8%E9%9D%99%E8%B0%A7%E4%B8%AD%E8%81%86%E5%90%AC%E6%88%90%E9%95%BF%E7%9A%84%E5%9B%9E%E5%93%8D/" title="实习之旅，时光流转：在静谧中聆听成长的回响">
                        <span class="hidden-mobile">实习之旅，时光流转：在静谧中聆听成长的回响</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
  
  
    <article id="comments">
      

    </article>
  


          </article>
        </div>
      </div>
    </div>

    <div class="side-col d-none d-lg-block col-lg-2">
      
  <aside class="sidebar" style="margin-left: -1rem">
    <div id="toc">
  <p class="toc-header">
    <i class="iconfont icon-list"></i>
    <span>目录</span>
  </p>
  <div class="toc-body" id="toc-body"></div>
</div>



  </aside>


    </div>
  </div>
</div>





  



  



  



  



  







    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v" for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>

    

    
  </main>

  <footer>
    <div class="footer-inner">
  
    <div class="footer-content">
       <a href="https://hexo.fluid-dev.com/docs/guide/" target="_blank" rel="nofollow noopener"> <span>Memory | 个人文档站点</span> </a>
<i class="iconfont icon-love"></i> <a href="https://hexo.fluid-dev.com/docs/guide/" target="_blank" rel="nofollow noopener"> <span>配置指南 | Hexo Fluid 用户手册</span> </a>   
    </div>
  
  
    <div class="statistics">
  
  

  
    
      <span id="leancloud-site-pv-container" style="display: none">
        总访问量 
        <span id="leancloud-site-pv"></span>
         次
      </span>
    
    
      <span id="leancloud-site-uv-container" style="display: none">
        总访客数 
        <span id="leancloud-site-uv"></span>
         人
      </span>
    
    

  
</div>

  
  
    <!-- 备案信息 ICP for China -->
    <div class="beian">
  <span>
    <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">
      京ICP证123456号
    </a>
  </span>
  
    
      <span>
        <a
          href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=12345678"
          rel="nofollow noopener"
          class="beian-police"
          target="_blank"
        >
          
            <span style="visibility: hidden; width: 0">|</span>
            <img src="/img/police_beian.png" alt="police-icon"/>
          
          <span>京公网安备12345678号</span>
        </a>
      </span>
    
  
</div>

  
  
</div>

  </footer>

  <!-- Scripts -->
  
  <script  src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js" ></script>
<script  src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script>
<script  src="/js/events.js" ></script>
<script  src="/js/plugins.js" ></script>


  <script  src="https://lib.baomitu.com/typed.js/2.0.12/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var subtitle = document.getElementById('subtitle');
      if (!subtitle || !typing) {
        return;
      }
      var text = subtitle.getAttribute('data-typed-text');
      
        typing(text);
      
    })(window, document);
  </script>







  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.18.2/tocbot.min.js', function() {
    var toc = jQuery('#toc');
    if (toc.length === 0 || !window.tocbot) { return; }
    var boardCtn = jQuery('#board-ctn');
    var boardTop = boardCtn.offset().top;

    window.tocbot.init(Object.assign({
      tocSelector     : '#toc-body',
      contentSelector : '.markdown-body',
      linkClass       : 'tocbot-link',
      activeLinkClass : 'tocbot-active-link',
      listClass       : 'tocbot-list',
      isCollapsedClass: 'tocbot-is-collapsed',
      collapsibleClass: 'tocbot-is-collapsible',
      scrollSmooth    : true,
      includeTitleTags: true,
      headingsOffset  : -boardTop,
    }, CONFIG.toc));
    if (toc.find('.toc-list-item').length > 0) {
      toc.css('visibility', 'visible');
    }

    Fluid.events.registerRefreshCallback(function() {
      if ('tocbot' in window) {
        tocbot.refresh();
        var toc = jQuery('#toc');
        if (toc.length === 0 || !tocbot) {
          return;
        }
        if (toc.find('.toc-list-item').length > 0) {
          toc.css('visibility', 'visible');
        }
      }
    });
  });
</script>


  <script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>

  <script>Fluid.plugins.codeWidget();</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/4.3.1/anchor.min.js', function() {
    window.anchors.options = {
      placement: CONFIG.anchorjs.placement,
      visible  : CONFIG.anchorjs.visible
    };
    if (CONFIG.anchorjs.icon) {
      window.anchors.options.icon = CONFIG.anchorjs.icon;
    }
    var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
    var res = [];
    for (var item of el) {
      res.push('.markdown-body > ' + item.trim());
    }
    if (CONFIG.anchorjs.placement === 'left') {
      window.anchors.options.class = 'anchorjs-link-left';
    }
    window.anchors.add(res.join(', '));

    Fluid.events.registerRefreshCallback(function() {
      if ('anchors' in window) {
        anchors.removeAll();
        var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
        var res = [];
        for (var item of el) {
          res.push('.markdown-body > ' + item.trim());
        }
        if (CONFIG.anchorjs.placement === 'left') {
          anchors.options.class = 'anchorjs-link-left';
        }
        anchors.add(res.join(', '));
      }
    });
  });
</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() {
    Fluid.plugins.fancyBox();
  });
</script>


  <script>Fluid.plugins.imageCaption();</script>

  <script  src="/js/local-search.js" ></script>

  <script defer src="/js/leancloud.js" ></script>





<!-- 主题的启动项，将它保持在最底部 -->
<!-- the boot of the theme, keep it at the bottom -->
<script  src="/js/boot.js" ></script>


  

  <noscript>
    <div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div>
  </noscript>
</body>
</html>
